python - 从相对时间 df 列构造日期列

标签 python pandas datetime python-3.6

我希望向以下 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 转换为 timedeltas :

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/

相关文章:

c# - 从不同日期的两个 DateTimes 获取分钟数

python - Mysql for Python编译器MinGW32 gcc.exe错误: CreateProcess file or directory not found

python - Django 将属性添加到 SelectMultiple <option> 标签

python-3.x - 在 Python 中使用 mca 包

python - Python/Pandas 中的 R/ifelse 等价物?比较字符串列?

mysql - 如何使用格式 (HH :mm:ss)) 在 MySQL 查询中减去时间

php - PHP 不允许多次登录

python - 四舍五入到最接近的 500,Python

python - 使用胡克定律近似 F

python - 如何在 Pandas 数据框中将单元格设置为 NaN