我有一个不规则采样的时间序列,并希望在其上使用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
答案 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