【发布时间】:2016-02-11 20:34:55
【问题描述】:
我有将近 3,000,000 行的 Pandas DataFrame。其中一列称为TIMESTAMP,属于datetime64 类型。时间戳格式如下:
2015-03-31 22:56:45.510
我的目标是计算收集数据的天数。我最初的方法很简单:
(df.TIMESTAMP.max() - df.TIMESTAMP.min()).days
但是,我发现这可能并不总是正确的,因为不能保证每天都收集数据。相反,我尝试使用 map 和 apply 计算时间戳系列中的唯一天数,并且都需要相当长的时间来处理 3,000,000 行:
%timeit len(df['TIMESTAMP'].map(lambda t: t.date()).unique())
1 loops, best of 3: 41.3 s per loop
%timeit len(df['TIMESTAMP'].apply(lambda t: t.date()).unique())
1 loops, best of 3: 42.3 s per loop
有没有一种方法可以加快计算速度,或者是完全不同但更好的方法?
谢谢!
【问题讨论】:
-
可以尝试类似:df.groupby(pandas.TimeGrouper('D')) 然后获取组数,不确定它是否会更快,但我怀疑是这样。
标签: python datetime pandas time-series