3

我有一个不规则采样的时间序列,并且想使用类似的函数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
4

1 回答 1

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

使结果符合 20 毫秒,滚动 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
于 2013-10-02T16:48:56.260 回答