1 回答
TA贡献1796条经验 获得超4个赞
您总是可以逐行处理它: 1),创建一个空的 DataFrame res;2)、选取一行并用行值DMS填写相关行;res3)、循环直到处理完所有行。
在这里,我用一些(可能是不必要的)技巧来解决它。通过利用apply方法,您不必DMS自己迭代:
DMS['SentTime'] = pd.to_datetime(DMS['SentTime']).dt.floor('60S')
DMS['EndTime'] = pd.to_datetime(DMS['EndTime']).dt.floor('60S')
dt_idx = pd.date_range(start=DMS['SentTime'].min(),end=DMS['EndTime'].max(),freq='60S')
# may you need '2016-01-22 15:00:00' as end insteand of DMS['EndTime'].max()
res = pd.DataFrame(index=pd.MultiIndex.from_product([DMS['ID'].unique(),dt_idx],names=['ID','TIME']),columns=DMS.columns)
def p(x):
_s = pd.IndexSlice[(x['ID'],pd.DatetimeIndex(start=x['SentTime'],end=x['EndTime'],freq='60S')),:]
res.loc[_s] = x.values
return '**'
DMS.apply(p,axis=1)
print(res)
添加回答
举报