roll_sum为熊猫中的不规则时间序列?

时间:2013-10-02 16:28:28

标签: pandas time-series

我有一个不规则采样的时间序列,并希望在其上使用pandas.stats.moments.rolling_sum之类的函数。

不幸的是,看起来这个函数只返回“x”样本,而不是“x”秒。

不知道怎么解决这个问题...对熊猫来说很新鲜。

我的数据看起来像

time     value
0.000    0.0000
0.013    0.0134
0.023    0.0256
0.035    0.0423
0.049    0.0756
0.069    0.0998

1 个答案:

答案 0 :(得分:2)

这是一种做我认为你想要的方式

In [34]: df = read_csv(StringIO(data),sep='\s+')

创建一个datelike-index(假设你的意思是秒,需要转换为ns以添加到日期)

In [35]: df['time'] = pd.to_datetime([Timestamp('20130101').value + v*1e9 for v in df['time'] ])

In [36]: df.set_index('time',inplace=True)

In [37]: df
Out[37]: 
                             value
time                              
2013-01-01 00:00:00         0.0000
2013-01-01 00:00:00.012999  0.0134
2013-01-01 00:00:00.023000  0.0256
2013-01-01 00:00:00.035000  0.0423
2013-01-01 00:00:00.048999  0.0756
2013-01-01 00:00:00.068999  0.0998

将结果符合20ms,滚动20个周期,没有最小值

In [38]: pd.rolling_sum(df,20,0,freq='20ms')
Out[38]: 
                              value
time                               
2013-01-01 00:00:00         0.00670
2013-01-01 00:00:00.020000  0.04065
2013-01-01 00:00:00.040000  0.11625
2013-01-01 00:00:00.060000  0.21605