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

使用Pandas DateOffset为DataFrame日期加1年报错的技术咨询

解决DataFrame日期列加1年报错的问题

嘿,这个错误很常见——问题出在你的calendardate列还是字符串类型,不是Pandas能识别的datetime格式,所以没法直接用pd.DateOffset做日期运算。咱们一步步搞定它:

第一步:把字符串日期转换成datetime类型

在做任何日期运算前,得先让Pandas把日期列当成「日期」来处理,用pd.to_datetime()完成类型转换:

# 将字符串列转为datetime格式
df['calendardate'] = pd.to_datetime(df['calendardate'])

第二步:给日期增加1年

现在列是标准的datetime类型了,就可以正常使用pd.DateOffset来偏移日期(它能自动处理闰年这类特殊情况,比pd.Timedelta更适合年份偏移):

# 给每个日期增加1年
df['calendardate'] = df['calendardate'] + pd.DateOffset(years=1)

可选:转回字符串格式(如果需要)

如果你之后需要把日期变回YYYY-MM-DD的字符串格式(比如导出CSV时),可以用dt.strftime():

# 转回字符串格式
df['calendardate'] = df['calendardate'].dt.strftime('%Y-%m-%d')

完整整合代码

把这些步骤加到你的原有代码里,完整版本如下:

import pandas as pd

df = pd.read_csv(data_market)
df = df[(df['calendardate'] > '2001-12-31')]
df = df[['ticker','calendardate','marketcap']]

# 核心修复步骤
df['calendardate'] = pd.to_datetime(df['calendardate'])
df['calendardate'] = df['calendardate'] + pd.DateOffset(years=1)

# 可选:转回字符串(根据需求选择)
# df['calendardate'] = df['calendardate'].dt.strftime('%Y-%m-%d')

这样运行就不会报错啦,本质就是先让Pandas把日期当成日期对象处理,而不是普通文本字符串~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:11