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

时间:2018-08-13 23:06:06

标签: python pandas

我有一个时间序列数据帧,该数据帧与数据无关,并且使用期间与日期。

我想在某些时候使用句点添加日期。

我的数据框看起来像

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 个答案:

答案 0 :(得分:2)

您可以基于period列创建一列timedelta,其中每一行都是period日期的时间delta(-1,因此从0开始)。然后,从您可以定义为datetime对象的start_date开始,将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()