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

熊猫,将日期列添加到序列中

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

    我想在某个时间点添加日期,使用句点。

    我的数据框看起来像

    period custid
    1      1
    2      1
    3      1
    1      2
    2      2
    1      3
    2      3
    3      3
    4      3
    

    我希望能够选择一个随机的开始日期,例如2018年1月1日,这将是第1段,因此您将

    period custid date
    1      1      1/1/2018
    2      1      2/1/2018
    3      1      3/1/2018
    1      2      1/1/2018
    2      2      2/1/2018
    1      3      1/1/2018
    2      3      2/1/2018
    3      3      3/1/2018
    4      3      4/1/2018
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   sacuL    6 年前

    您可以根据 period 期间 日期(-1,因此它从0开始)。然后,从你的 start_date ,可以将其定义为datetime对象,将timedelta添加到开始日期:

    start_date = pd.to_datetime('1/1/2018')
    
    df['date'] = pd.to_timedelta(df['period'] - 1, unit='D') + start_date
    
    >>> df
       period  custid       date
    0       1       1 2018-01-01
    1       2       1 2018-01-02
    2       3       1 2018-01-03
    3       1       2 2018-01-01
    4       2       2 2018-01-02
    5       1       3 2018-01-01
    6       2       3 2018-01-02
    7       3       3 2018-01-03
    8       4       3 2018-01-04
    

    编辑 :在您的评论中,您说您试图添加月,而不是天。为此,您可以使用您的方法,或者也可以使用以下方法:

    from pandas.tseries.offsets import MonthBegin
    
    df['date'] = start_date + (df['period'] -1) * MonthBegin()