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

在Pandas DataFrame中结合日期类型使用DateOffset的报错问题

问题解决:Timestamp KeyError与日期偏移计算

错误原因

你当前代码的问题出在df['start_date'].apply(lambda x: DateOffset(month = df.loc[x,'total_months'].astype(int)))这一行:

  • 当对df['start_date']调用apply时,lambda参数x是单个Timestamp类型的日期值,而非行的索引。
  • 你用df.loc[x, 'total_months']试图以Timestamp为索引查找行,数据集中不存在这类索引,因此抛出KeyError: Timestamp。
  • 之前用常量数字能成功,是因为不需要通过索引查找值,直接给DateOffset传入固定数值即可。

正确解决方案

方案1:整行遍历(简洁直观)

改用df.apply(axis=1),可同时获取每行的start_date和total_months:

from pandas.tseries.offsets import DateOffset

df['final_date'] = df.apply(lambda row: row['start_date'] + DateOffset(months=row['total_months']), axis=1)

方案2:矢量化操作(性能更优)

针对大数据集,推荐用矢量化计算替代apply,效率更高:

import pandas as pd

df['final_date'] = df['start_date'] + pd.DateOffset(months=1) * df['total_months']

补充说明

  • 注意DateOffset的参数是months而非month(你原代码写错了参数名,这也是潜在问题)。
  • DateOffset会自动处理月末日期的边界情况(比如2023-01-31加1个月得到2023-02-28/29),符合常规业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:25:11