You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pandas实现日期列减Delta列天数的计算求助

Pandas日期列按天数差计算新日期的解决方案

问题场景

原始数据:

Dates  Delta
0 2022-10-01     10
1 2022-10-01     21
2 2022-10-01     34

需求:添加新列CalculatedDate,值为Dates列的日期减去Delta列对应的天数,理想输出:

Dates  Delta CalculatedDate
0  2022-10-01     10     2022-09-21
1  2022-10-01     21     2022-09-10
2  2022-10-01     34     2022-08-23

错误原因

原代码中timedelta(days=df['Delta'])无法运行,因为Python标准库的datetime.timedelta只能接收单个数值,不能直接处理Pandas的Series对象。

正确实现代码

方法1:使用Pandas内置的pd.to_timedelta(推荐)

这种方法效率更高,适合处理大数据集:

# importing libraries to create and manipulate toy data
import pandas as pd
from datetime import datetime, timedelta

# create toy data
df = pd.DataFrame({'Dates': ['2022-10-01', '2022-10-01', '2022-10-01'],
                  'Delta': [10, 21, 34]})

# cast the `Dates` column as dates
df['Dates'] = pd.to_datetime(df['Dates'])

# 正确生成CalculatedDate列
df['CalculatedDate'] = df['Dates'] - pd.to_timedelta(df['Delta'], unit='days')

# 查看结果
print(df)

方法2:使用apply逐行处理

适合需要自定义复杂逻辑的场景,但效率略低:

# ... 前面的代码和上面一致 ...

df['CalculatedDate'] = df.apply(lambda row: row['Dates'] - timedelta(days=row['Delta']), axis=1)

运行后输出结果符合预期:

Dates  Delta CalculatedDate
0 2022-10-01     10     2022-09-21
1 2022-10-01     21     2022-09-10
2 2022-10-01     34     2022-08-23

内容的提问来源于stack exchange,提问作者pkpto39

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:30:38