如何解决在大熊猫中,可以使用asfreq选择采样的特定时间吗? resample + asfreq
我在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
... ... ...
解决方法
一种方法是对其进行数学计算:
var taskResults = await Task.WhenAll(DoWorkAsync(),DoMoreWorkAsync());
var DoWorkResult = taskResults.Result.Item1;
var DoMoreWorkResult = taskResults.Result.Item2;
,
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
,则可以使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。