Home Articles

重新采样不同的时间序列

Asked
Viewed 1352 times
0

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

  • 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
    

Related