Pandas日期列转换:如何替换无效值?astype仅支持raise/ignore
解决DataFrame日期列转换时保留有效日期并替换无效值的问题
你可以使用pandas的pd.to_datetime()函数替代astype()来实现需求,这个函数支持errors='coerce'参数,能将无效日期值转为时间类型的空值NaT,之后再通过fillna()替换为你需要的默认值。
具体代码示例
import pandas as pd # 第一步:转换日期列,无效值转为NaT(时间类型空值) df["Date"] = pd.to_datetime(df["Date"], errors="coerce") # 第二步:将所有NaT替换为指定默认日期(示例用2000-01-01,可自行修改) df["Date"] = df["Date"].fillna(pd.to_datetime('2000-01-01'))
也可以合并为一行代码:
df["Date"] = pd.to_datetime(df["Date"], errors="coerce").fillna(pd.to_datetime('2000-01-01'))
关键说明
pd.to_datetime(..., errors="coerce"):自动识别有效日期格式完成转换,无法解析的无效值统一转为NaT,不会导致脚本崩溃。fillna():将所有NaT替换为你指定的默认日期,注意默认值需要用pd.to_datetime()转为datetime类型,避免出现类型不匹配问题。
内容的提问来源于stack exchange,提问作者Prashant Kumar
相关产品推荐
相关产品推荐

