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

pandas dataframe日期列00开头年份使用replace替换无效果如何解决

问题原因
  • 未明确指定操作列:原始写法对全表执行正则替换,非字符串类型的列(如datetime类型的date_2、date_3)不会被正则匹配命中,若date_1实际为自动解析的日期类型而非字符串类型,也会导致替换失效,可执行print(my_df['date_1'].dtype)确认列类型,输出为object才是字符串类型。
  • 正则规则不严谨:原始写法没有锚定年份位置,若字符串其他位置出现0020会被误替换。
解决方案

方案1:date_1为字符串类型(推荐,仅操作目标列性能更高)

使用pandas字符串列专用的str.replace方法,锚定字符串开头匹配年份前缀:

my_df['date_1'] = my_df['date_1'].str.replace(r'^0020', '2020', regex=True)

方案2:date_1为datetime类型

先转成字符串做替换,再转回日期格式:

import pandas as pd
my_df['date_1'] = pd.to_datetime(my_df['date_1'].astype(str).str.replace(r'^0020', '2020'))

方案3:需全表所有字符串列替换

如果要对所有字符串列的0020前缀做统一替换,使用全表replace的正确写法:

my_df = my_df.replace(to_replace=r'^0020', value='2020', regex=True)

替换完成后可直接打印my_df['date_1']验证修改结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:05