我有一个pandas数据帧,它包含多个对象的时间序列,例如:每个对象都有一个ID和一个值列表。框架的每一行都具有Object_ID Time Value形式。现在我想通过pd.resample()重新采样这个数据帧。分别处理每个对象的最佳方法是什么?
一个例子 - 原始数据框是:
ID Time Value
0 0 1
0 1 1
0 2 1
3 1 4
3 2 6
3 3 6
5 10 0
5 11 1
示例输出(从时间步1s到0.5s重新采样):
ID Time Value
0 0 1
0 0.5 1
0 1 1
0 1.5 1
0 2 1
0 2.5 1
3 1 4
3 1.5 5
3 2 6
3 2.5 6
3 3 6
3 3.5 6
5 10 0
5 10.5 0.5
5 11 1
5 11.5 1.5
(插值在这里并不重要,我想我能做到这一点)。 谢谢!
答案 0 :(得分:1)
这几乎有效。结果是错过了最后一行,我没有看到修复它的简洁方法。
result = df.set_index(pd.to_timedelta(df['Time'], unit='s')).groupby('ID')\
.resample('500ms').asfreq().interpolate().reset_index(drop=True)
result['ID'] = result['ID'].astype(int)
# output
result
ID Time Value
0 0.0 1.0
0 0.5 1.0
0 1.0 1.0
0 1.5 1.0
0 2.0 1.0
3 1.0 4.0
3 1.5 5.0
3 2.0 6.0
3 2.5 6.0
3 3.0 6.0
5 10.0 0.0
5 10.5 0.5
5 11.0 1.0