代码之家  ›  专栏  ›  技术社区  ›  Stacey

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

  •  1
  • Stacey  · 技术社区  · 6 年前

    我有个相框( 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 是一行中的日期与上一行中的日期之间的差值。我用下面的公式来计算 日期差异 :

    df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1))
    

    我正在寻找一种将DATE_DIFF列转换为integer的方法,以便生成的数据帧如下所示:

            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 回复  |  直到 6 年前
        1
  •  1
  •   It_is_Chris    6 年前

    你可以做完全相同的事情,你目前正在做的只是添加 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
    

        2
  •  0
  •   Xnero    6 年前

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

    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