熊猫添加日期到日期和基于另一列的天数

Joe*_*vin 2 python pandas

在python中,我的数据框像:

date1 num
2017-03-02 8
2017-04-15 4
2017-06-30 1
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果数据框(添加 date2 列):

date1 num date2
2017-03-02 8 2017-03-10
2017-04-15 4 2017-04-19
2017-06-30 1 2017-07-01
Run Code Online (Sandbox Code Playgroud)

我知道:df.date1 +pd.offsets.Day(x),但x不允许是系列。而且我知道apply()函数可能可以解决这个问题,但是我的数据帧的行数超过 10 亿。

那么该怎么办?

jez*_*ael 5

您可以添加timedeltas创建者to_timedelta

df['date2'] = df['date1'] + pd.to_timedelta(df['num'], unit='d')
print (df)
       date1  num      date2
0 2017-03-02    8 2017-03-10
1 2017-04-15    4 2017-04-19
2 2017-06-30    1 2017-07-01
Run Code Online (Sandbox Code Playgroud)

如果根据需要添加month的使用applyaxis=1由行和proceses dateoffset

df['date3'] = df.apply(lambda x: x['date1'] + pd.offsets.DateOffset(months=x['num']), 1)
print (df)
       date1  num      date3
0 2017-03-02    8 2017-11-02
1 2017-04-15    4 2017-08-15
2 2017-06-30    1 2017-07-30
Run Code Online (Sandbox Code Playgroud)