我希望添加一个列“到期日期”'到以下df:
In [157]: df
Out[157]:
atmVol t
0 0.043220 0.02
1 0.042139 0.04
2 0.041174 0.06
3 0.040328 0.08
4 0.039606 0.10
5 0.038364 0.15
6 0.037971 0.20
7 0.038480 0.25
尝试了这个:
df['expiry'] = df.apply(lambda x: datetime.utcnow() + timedelta(x.t * 365)
返回一个AttributeError :("'系列'对象没有属性''",'发生在索引atmVol')
我在这里做错了什么?谢谢你的帮助。
答案 0 :(得分:1)
您可以将Series.apply
用于一列:
df['expiry'] = df['t'].apply(lambda x: datetime.utcnow() + timedelta(x * 365))
或者通过to_timedelta
将t
列转换为timedelta
:
df['expiry'] = datetime.utcnow() + pd.to_timedelta(df['t'] * 365, unit='d')
df['expiry1'] = df['t'].apply(lambda x: datetime.utcnow() + timedelta(x * 365))
df['expiry2'] = datetime.utcnow() + pd.to_timedelta(df['t'] * 365, unit='d')
print (df)
atmVol t expiry1 expiry2
0 0.043220 0.02 2018-02-01 21:14:02.057250 2018-02-01 21:14:02.057250
1 0.042139 0.04 2018-02-09 04:26:02.057250 2018-02-09 04:26:02.057250
2 0.041174 0.06 2018-02-16 11:38:02.057250 2018-02-16 11:38:02.057250
3 0.040328 0.08 2018-02-23 18:50:02.057250 2018-02-23 18:50:02.057250
4 0.039606 0.10 2018-03-03 02:02:02.057250 2018-03-03 02:02:02.057250
5 0.038364 0.15 2018-03-21 08:02:02.057250 2018-03-21 08:02:02.057250
6 0.037971 0.20 2018-04-08 14:02:02.057250 2018-04-08 14:02:02.057250
7 0.038480 0.25 2018-04-26 20:02:02.057250 2018-04-26 20:02:02.057250