我有一个日期框架(df
),其头部看起来像:
DATE BBG FLAG DATE_DIFF
0 2014-03-04 A 0 NaT
1 2014-04-04 B 1 31 days
2 2014-04-07 C 0 3 days
3 2014-04-08 D 0 1 days
4 2014-04-09 E 0 1 days
DATE_DIFF
列是一行中的日期与上一行中的日期之间的差异。我使用以下内容来计算DATE_DIFF
:
df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1))
我正在寻找一种将 DATE_DIFF 列转换为整数的方法,以便生成的数据帧如下所示:
DATE BBG FLAG DATE_DIFF
0 2014-03-04 A 0 NaN
1 2014-04-04 B 1 31
2 2014-04-07 C 0 3
3 2014-04-08 D 0 1
4 2014-04-09 E 0 1
我尝试过使用:
df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1)).astype(int)
但这只是给了我错误:
TypeError: cannot astype a timedelta from [timedelta64[ns]] to [int32]
最佳答案
您可以做与当前正在做的完全相同的事情,只需添加dt.days
df['diff'] = (df['DATE']-df['DATE'].shift(1)).dt.days
DATE BBG FLAG diff
0 2014-03-04 A 0 NaN
1 2014-04-04 B 1 31.0
2 2014-04-07 C 0 3.0
3 2014-04-08 D 0 1.0
4 2014-04-09 E 0 1.0
请注意,数据类型将是 float 而不是整数,因为第一行是 NaN
关于python - 将两个日期之间的差值转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135789/