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

如何计算DataFrame列的时间增量 实现日期加对应月份生成新列

你写的代码无法生效是因为 timedelta 不支持月份维度的时间计算,月份的天数不固定,timedelta 仅支持天、小时、秒等固定长度的时间单位偏移。

正确实现方案如下:

import pandas as pd

# 构造示例数据(你自己的数据集可以跳过这步)
df = pd.DataFrame({
    'a': [3,2,5],
    'b': ['2021-08-01', '2021-07-01', '2021-01-01']
})

# 先把b列转换为pandas日期格式,避免字符串运算出错
df['b'] = pd.to_datetime(df['b'])

# 逐行按a列的数值做月份偏移,得到c列
df['c'] = df.apply(lambda row: row['b'] + pd.DateOffset(months=row['a']), axis=1)

# 如果需要c列输出为YYYY-MM-DD格式的字符串,可以加下面这行
# df['c'] = df['c'].dt.strftime('%Y-%m-%d')

运行后得到的结果和你给出的预期输出完全一致。如果处理百万级以上的大数据量,觉得apply性能不足,也可以用df['b'] + pd.to_timedelta(df['a'] * 30.44, unit='D')做向量化运算,该方案是按每月平均30.44天近似计算,性能更高但存在极个别场景的日期误差,常规场景优先用上面的DateOffset方案即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:21:04