我在pandas DataFrame中有一些详细的时间序列数据,如下所示:
last returns
time
1990-01-02 09:47:00 21.80 NaN
1990-01-02 09:48:00 21.82 0.000917
1990-01-02 09:49:00 21.82 0.000000
1990-01-02 09:50:00 21.80 -0.000917
1990-01-02 09:51:00 21.86 0.002752
1990-01-02 09:52:00 21.87 0.000457
1990-01-02 09:53:00 21.82 -0.002286
1990-01-02 09:54:00 21.83 0.000458
1990-01-02 09:55:00 21.85 0.000916
... ... ...
我想对其进行过滤,以仅保留分钟可被5整除的数据,如下所示。为此,我使用了以下代码:
df.truncate(before='1990-01-02 09:50:00').asfreq('5T')
last returns
time
1990-01-02 09:50:00 21.80 -0.000917
1990-01-02 09:55:00 21.85 0.000916
1990-01-02 10:00:00 21.79 -0.001375
1990-01-02 10:05:00 21.84 -0.000458
1990-01-02 10:10:00 21.91 0.000914
1990-01-02 10:15:00 21.88 0.000000
1990-01-02 10:20:00 21.87 -0.000457
1990-01-02 10:25:00 21.92 -0.000456
1990-01-02 10:30:00 21.93 0.000913
... ... ...
此代码显然不能很好地概括。大熊猫内部是否有功能允许我获取通用DataFrame的5分钟数据?注意,以下代码提供以下输出。它查看第一个可用时间,然后每隔5分钟拉出一个条目。
df.asfreq('5T')
last returns
time
1990-01-02 09:47:00 21.80 NaN
1990-01-02 09:52:00 21.87 0.000457
1990-01-02 09:57:00 21.85 0.000458
1990-01-02 10:02:00 21.84 0.001835
1990-01-02 10:07:00 21.85 -0.000914
1990-01-02 10:12:00 21.88 0.000915
1990-01-02 10:17:00 21.88 0.000915
1990-01-02 10:22:00 21.92 0.000913
1990-01-02 10:27:00 21.90 0.000914
... ... ...
resample
+ asfreq
只要频率均匀地划分一天,或均匀地除以一天:
分组的仓根据时间序列起始点的一天的开始进行调整。
df.resample('5T').asfreq()
last returns
time
1990-01-02 09:45:00 NaN NaN
1990-01-02 09:50:00 21.80 -0.000917
1990-01-02 09:55:00 21.85 0.000916
因此,您可以使用offset
if参数明确更改起点pandas >= '1.1.0'
。
df.resample('5T', offset='2T').asfreq()
last returns
time
1990-01-02 09:47:00 21.80 NaN
1990-01-02 09:52:00 21.87 0.000457
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句