在python中,我的数据框如:
date1 num
2017-03-02 8
2017-04-15 4
2017-06-30 1
我想要结果数据框(添加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
我知道:df.date1 +pd.offsets.Day(x)
,但x
不允许成为系列。我知道apply()
函数可以解决这个问题,
但我的数据帧的行数超过十亿。
那该怎么办?
答案 0 :(得分:3)
您可以添加to_timedelta
创建的timedeltas
:
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
如果要添加month
,请使用apply
与axis=1
一起按行和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