将两个日期之间的差转换为整数

时间:2018-11-03 21:44:47

标签: python pandas

我有一个日期框架(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]

2 个答案:

答案 0 :(得分:1)

只需添加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

请注意,因为第一行是NaN,所以dtype将是float而不是int

答案 1 :(得分:0)

如果有两个日期对象,则可以减去它们。

from datetime import date

d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print delta.days

文档的相关部分: https://docs.python.org/library/datetime.html