我的数据框中有两个日期时间(时间戳)格式的列,df['start'], df['end']
。我想知道两个日期之间的持续时间。所以我创建了持续时间列
df['duration'] = df['start'] - df['end']
然而,现在duration
列的格式为numpy.timedelta64
, 代替datetime.timedelta
正如我所期望的。
>>> df['duration'][0]
>>> numpy.timedelta64(0,'ns')
While
>>> df['start'][0] - df['end'][0]
>>> datetime.timedelta(0)
有人可以向我解释为什么数组减法会改变timedelta
类型?有没有办法让我保留datetime.timedelta
因为它更容易合作?
这是在 pandas 0.15.0 中实现 Timedelta 标量的动机之一。查看完整文档here
在 >= 0.15.0 中实施timedelta64[ns]
系列依旧np.timedelta64[ns]
在引擎盖下,但所有内容都完全对用户隐藏datetime.timedelta
子类标量,Timedelta
(这基本上是 timedelta 和 numpy 版本的有用超集)。
In [1]: df = DataFrame([[pd.Timestamp('20130102'),
pd.Timestamp('20130101')]],
columns=list('AB'))
In [2]: df['diff'] = df['A'] - df['B']
In [3]: df.dtypes
Out[3]:
A datetime64[ns]
B datetime64[ns]
diff timedelta64[ns]
dtype: object
# this will return a Timedelta in 0.15.2
In [4]: df['A'][0] - df['B'][0]
Out[4]: datetime.timedelta(1)
In [5]: (df['A'] - df['B'])[0]
Out[5]: Timedelta('1 days 00:00:00')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)