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

Pandas日期列转datetime64失败,无法使用max()方法求助

解决pandas日期转换时因无效值触发ParserError的问题

针对你的情况,核心问题是日期列中存在无法解析的字符串“-”,导致pd.to_datetime()报错。这里提供几种实用的解决方法:

方法1:强制转换无效值为NaT(推荐)

使用pd.to_datetime()的errors='coerce'参数,将所有无法解析的日期字符串转换为pandas的缺失日期类型NaT,这样就能顺利完成类型转换,后续调用max()时NaT会自动被忽略。

代码示例:

df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
# 之后直接调用max()
max_date = df['Date'].max()

方法2:先过滤无效值再转换

如果不需要保留含“-”的行,可以先过滤掉这些无效行,再对剩余有效日期进行转换:

# 生成仅包含有效日期的新DataFrame
df_clean = df[df['Date'] != '-'].copy()
df_clean['Date'] = pd.to_datetime(df_clean['Date'])
max_date = df_clean['Date'].max()

如果需要保留原DataFrame的所有行,仅转换有效日期:

# 只对非“-”的行进行日期转换
mask = df['Date'] != '-'
df.loc[mask, 'Date'] = pd.to_datetime(df.loc[mask, 'Date'])
# 调用max()时需排除未转换的“-”
max_date = df.loc[mask, 'Date'].max()

方法3:替换无效值为特定日期(按需使用)

如果“-”在业务中代表某个特定的默认日期(比如缺失的历史日期),可以先替换该值再进行转换:

# 将“-”替换为指定日期,再转换
df['Date'] = pd.to_datetime(df['Date'].replace('-', '2000-01-01'))
max_date = df['Date'].max()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:54:33