【发布时间】:2017-10-13 21:00:50
【问题描述】:
这个问题“被问了很多”-但是在仔细查看其他答案后,我还没有找到适合我的解决方案。很遗憾,这仍然是一个症结所在。
我有一个带有 datetime 列的 pandas 数据框,我只想计算数据覆盖的时间范围,以秒为单位(比如说)。
from datetime import datetime
# You can create fake datetime entries any way you like, e.g.
df = pd.DataFrame({'datetime': pd.date_range('10/1/2001 10:00:00', \
periods=3, freq='10H'),'B':[4,5,6]})
# (a) This yields NaT:
timespan_a=df['datetime'][-1:]-df['datetime'][:1]
print timespan_a
# 0 NaT
# 2 NaT
# Name: datetime, dtype: timedelta64[ns]
# (b) This does work - but why?
timespan_b=df['datetime'][-1:].values.astype("timedelta64")-\
df['datetime'][:1].values.astype("timedelta64")
print timespan_b
# [72000000000000]
为什么 (a) 不起作用?
为什么需要 (b) 而不是? (它还提供了一个单元素
numpy数组而不是timedelta对象)
我的 pandas 版本为 0.20.3,排除了早期已知的错误。
这是一个动态范围问题吗?
【问题讨论】: