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

将对象转换为仅日期并区分两列

  •  0
  • pylearner  · 技术社区  · 7 年前

    我有一个dataframe,它有两列要在date中给出,但是它的dtype是object。

    数据框:

       A                B
    7/27/2002   5/29/2013
    5/25/2004   4/21/2005
    4/22/2008   4/28/2010
    6/22/2007   7/30/2008
    7/26/2008   6/21/2011
    7/29/2008   6/20/2013
    6/26/2000   7/23/2005
    6/20/1991   7/27/2013
    5/22/2005   4/27/2010
    

    我想从a中减去b,得到每个独立列中的年数和日数。

    预期输出:

    NO OF YEARS    NO OF DAYS
    1                  320
    2                  600
    3                  900
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    我认为需要将所有值转换为datetimes,然后减去 sub 并将时间增量转换为 days ,多年来被用来除以 constant 365.2425 具有 floor 以下内容:

    df = df.apply(pd.to_datetime)
    
    df['days'] = df['B'].sub(df['A']).dt.days 
    df['years'] = np.floor(df['days'] / 365.2425).astype(int)
    print (df)
               A          B  days  years
    0 2002-07-27 2013-05-29  3959     10
    1 2004-05-25 2005-04-21   331      0
    2 2008-04-22 2010-04-28   736      2
    3 2007-06-22 2008-07-30   404      1
    4 2008-07-26 2011-06-21  1060      2
    5 2008-07-29 2013-06-20  1787      4
    6 2000-06-26 2005-07-23  1853      5
    7 1991-06-20 2013-07-27  8073     22
    8 2005-05-22 2010-04-27  1801      4