从相对时间pd.df列构造日期列

时间:2018-01-25 13:56:07

标签: python pandas datetime python-3.6

我希望添加一个列“到期日期”'到以下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')

我在这里做错了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以将Series.apply用于一列:

df['expiry'] = df['t'].apply(lambda x: datetime.utcnow() + timedelta(x * 365))

或者通过to_timedeltat列转换为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