重新采样不同的时间序列

时间:2018-01-08 13:31:59

标签: python pandas

我有一个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

(插值在这里并不重要,我想我能做到这一点)。 谢谢!

1 个答案:

答案 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