Python:在数据框中将timedelta转换为int


Answers:


160

使用dt.days属性。通过以下方式访问此属性:

timedelta_series.dt.days

您也可以通过相同的方式获取secondsmicroseconds属性。


11
我喜欢此注释是为了简单起见,不需要导入其他库。
NickBraunagel '17

67

您可以这样做,td您的一系列时间增量在哪里。该除法将纳秒增量转换为天增量,并且转换为int的时间减少为整天。

import numpy as np

(td / np.timedelta64(1, 'D')).astype(int)

1
谢谢!另外,经过15分钟的搜索,我发现了这一点。stackoverflow.com/questions/18215317/...
阿萨夫哈尼什

/之间的作用是什么?tdnp
詹森·目标

它是timedelta64除法运算符。将td除以1天的时间增量会得出以td表示的天数(可能是小数)。在这种情况下不是必需的,但是如果您说出td代表多少个15分钟间隔,这很有用
David Waterworth

22

Timedelta对象具有只读实例属性.days.seconds.microseconds


6

如果问题不仅仅在于“如何访问timedelta的整数形式?” 但是“如何将数据帧中的timedelta列转换为int?” 答案可能有所不同。除了访问.dt.days器,您还需要df.astype或者pd.to_numeric

这些选项中的任何一个都可以帮助:

df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')

要么

df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')

嗨,我尝试过此操作,但出现ValueError:无法将非有限值(NA或inf)转换为整数,因为在熊猫系列中存在nans。你知道谁来解决这个问题吗???
Pablito

第二个选项对我有用,日期值是类型timedelta64[ns]。如果您的日期是NaN,请先使用pandas to_datetime函数将其转换为datetime ,然后使用上面的第二个选项。有关更多详细信息,请检出to_datetime
simon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.