如何使用Pandas修改DataFrame中1月日期的年份?
解决Pandas仅修改1月日期年份的问题
错误原因
你之前的代码尝试给**整行数据(包含数值类型的data列)**添加日期偏移,导致类型不兼容——数值无法与日期偏移量进行运算,因此触发报错。
正确解决方案
只针对Date列进行修改,避免操作其他无关列:
方法一:使用loc定位+日期偏移量
import pandas as pd df = pd.DataFrame({'Date': pd.date_range(start = "01-01-2023", end = "12-31-2023"), 'data': 25}) # 仅修改1月数据的Date列年份 df.loc[df['Date'].dt.month == 1, 'Date'] += pd.offsets.DateOffset(years=1)
方法二:直接替换年份(更高效,需注意闰年问题)
如果不需要处理闰年特殊情况,可直接替换年份:
df.loc[df['Date'].dt.month == 1, 'Date'] = df.loc[df['Date'].dt.month == 1, 'Date'].dt.replace(year=2024)
两种方法的区别
DateOffset会自动处理闰年:比如原日期是2020年2月29日,加1年会转为2021年2月28日dt.replace是直接替换年份,若原日期是2月29日且目标年份非闰年,会触发报错,需提前验证日期合法性
内容的提问来源于stack exchange,提问作者ghw29
相关产品推荐
相关产品推荐

