Pandas 一天一天

Pandas day for day

我在 Pandas 数据框中有很多数据:

Timestamp                 Value     
2015-07-15 07:16:39.034  49.960 
2015-07-15 07:16:39.036  49.940 
......
2015-08-12 23:16:39.235  42.958  

我每天大约有 50 000 个条目,我想每天对这些数据执行不同的操作。

例如,如果我想找到滚动平均值,我会输入:

 df['rm5000'] = pd.rolling_mean(df['Value'], window=5000)

但这会给我跨日期的滚动平均值。 8 月 12 日的第一个滚动平均数据点将包含 8 月 11 日的 4999 个数据点。但是,我想每天都重新开始,因为每天的前 4999 个数据点不包含 5000 的滚动平均值,因为最后一个日期和第一个日期之间可能会有很大差异第二天的数据。

我是否必须将每个日期的数据分割成单独的数据帧,以便 Pandas 对每个单独日期的数据执行某些操作?

如果将时间戳设置为索引,则可以groupby一个TimeGrouper带有频率代码的数据按天划分数据,如下所示

In [2]: df = pd.DataFrame({'Timestamp': pd.date_range('2015-07-15', '2015-07-18', freq='10min'), 
                           'Value': np.linspace(49, 51, 433)})

In [3]: df = df.set_index('Timestamp')

In [4]: df.groupby(pd.TimeGrouper('D'))['Value'].apply(lambda x: pd.rolling_mean(x, window=15))

Out[4]: 
Timestamp
2015-07-15 00:00:00          NaN
2015-07-15 00:10:00          NaN
.....
2015-07-15 23:30:00    49.620370
2015-07-15 23:40:00    49.625000
2015-07-15 23:50:00    49.629630
2015-07-16 00:00:00          NaN
2015-07-16 00:10:00          NaN