我希望向以下 df 添加“expiry”列:
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: ("'Series' 对象没有属性 't'", '发生在索引 atmVol')
我在这里做错了什么?感谢您的帮助。
最佳答案
您可以使用Series.apply
一栏:
df['expiry'] = df['t'].apply(lambda x: datetime.utcnow() + timedelta(x * 365))
或者通过 to_timedelta
将列 t
转换为 timedelta
s :
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
关于python - 从相对时间 df 列构造日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48444603/