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

时间:2014-09-03 13:53:19

标签: python pandas timedelta

我想在pandas数据框中创建一个列,它是timedelta列中天数的整数表示。是否可以使用'datetime.days'或者我需要做更多手动的事情吗?

timedelta专栏

  

7天,23:29:00

天整数列

  

7

6 个答案:

答案 0 :(得分:88)

使用dt.days属性。假设td是您的timedelta系列的名称,请通过以下方式访问此属性:

td.dt.days

您还可以采用相同的方式获取secondsmicroseconds属性。

答案 1 :(得分:60)

你可以这样做,其中td是你的一系列timedeltas。该部门将纳秒级别转换为日期增量,并且转换为int将降至整天。

import numpy as np

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

答案 2 :(得分:10)

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

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:1)

我认为这样做更容易(其中 dif 是日期之间的差异):

dif_In_Days = dif.days

答案 5 :(得分:0)

最简单的方法是通过

df["DateColumn"] = (df["DateColumn"]).dt.days