Pandas如何将数值列的值作为天数加到日期时间列中
解决方案
错误原因
- 你的日期列(示例中为
date,你的业务代码中为device_install_date)当前是字符串格式,Python 会将+识别为字符串拼接操作,无法直接和整数类型的天数列(示例中为day,你的业务代码中为lifetime)相加 - 日期加天数不能直接加普通整数,需要转换为pandas可识别的时间增量格式
实现步骤
- 首先将日期列转换为pandas datetime类型:
import pandas as pd # 业务场景下可把date替换为你的实际日期列名device_install_date df['date'] = pd.to_datetime(df['date'])
- 把天数列转为时间增量后和日期列相加,如果你需要先存储计算后的日期,可以生成新列:
# 业务场景下可把date替换为device_install_date,day替换为lifetime,unit='D'代表增量单位为天 df['calculated_date'] = df['date'] + pd.to_timedelta(df['day'], unit='D')
- 对应你的筛选需求,可以直接在条件中计算:
# 对比的日期值也转成datetime类型避免格式兼容问题 result = df[df['date'] + pd.to_timedelta(df['day'], unit='D') < pd.to_datetime('2021-07-27')]
拿你给出的示例数据运行后,筛选结果只会返回2021-07-25对应的那一行,符合计算逻辑。
内容的提问来源于stack exchange,提问作者french_fries
相关产品推荐
相关产品推荐

