我有一个时间序列数据帧,该数据帧与数据无关,并且使用期间与日期。
我想在某些时候使用句点添加日期。
我的数据框看起来像
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
答案 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()