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

我想在熊猫数据框架中创建一个列,它是一个整数,表示 timedelta 列中的天数。是否可以使用“ datetime.days”,还是需要更多的手动操作?

Timedelta 列

7天23:29:00

天数整数列

7

388146 次浏览

你可以这样做,其中 td是你的时间三角洲系列。这个除法将纳秒三角洲转换为日三角洲,将整数转换为整天。

import numpy as np


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

Series 类有一个 pandas.Series.dt访问器对象和几个 有用的日期时间属性,包括 dt.days。通过以下方式访问该属性:

timedelta_series.dt.days

您还可以以相同的方式获得 secondsmicroseconds属性。

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

如果问题不仅仅是“如何访问一个整数形式的时间差?”而是“如何将数据框架中的 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')

最简单的方法是

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

最好的办法就是

dif_in_days = dif.days (其中 dif是日期之间的差异)