加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在熊猫中分组时间的快捷方式

发布时间:2020-12-16 21:52:10 所属栏目:Python 来源:网络整理
导读:我有几天1分钟数据的时间序列,并且希望在一天中的所有日期对其进行平均. 这很慢: from datetime import datetimefrom pandas import date_range,Seriestime_ind = date_range(datetime(2013,1,1),datetime(2013,10),freq='1min')all_data = Series(randn(le

我有几天1分钟数据的时间序列,并且希望在一天中的所有日期对其进行平均.

这很慢:

from datetime import datetime
from pandas import date_range,Series
time_ind = date_range(datetime(2013,1,1),datetime(2013,10),freq='1min')
all_data = Series(randn(len(time_ind)),time_ind)
time_mean = all_data.groupby(lambda x: x.time()).mean()

运行差不多一分钟!

虽然像:

time_mean = all_data.groupby(lambda x: x.minute).mean()

只需要几分之一秒.

是否有更快的方式按时间分组?

知道为什么这么慢吗?

最佳答案
在版本0.11.0中,你的“lambda-version”和version 0.11中引入的time属性似乎都很慢:

In [4]: %timeit all_data.groupby(all_data.index.time).mean()
1 loops,best of 3: 11.8 s per loop

In [5]: %timeit all_data.groupby(lambda x: x.time()).mean()
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python object' in 

使用当前的master,两种方法都相当快:

In [1]: pd.version.version
Out[1]: '0.11.1.dev-06cd915'

In [5]: %timeit all_data.groupby(lambda x: x.time()).mean()
1 loops,best of 3: 215 ms per loop

In [6]: %timeit all_data.groupby(all_data.index.time).mean()
10 loops,best of 3: 113 ms per loop
'0.11.1.dev-06cd915'

因此,您可以更新到主服务器或等待本月应该发布的0.11.1.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读