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

使用str.split拆分日期并展开时,如何避免单日期行返回NaN值?

问题修复:DataFrame日期拆分后单个日期返回NaN的解决方法

问题原因

你的代码中pd.to_datetime使用了dayfirst=True参数,会强制按日/月/年解析日期,但单个日期是YYYY-MM-DD格式(年-月-日),解析时会把20当成日,超出合法日期范围导致返回NaN;另外最后一行转换结果未赋值回原列,导致转换操作未生效(从你给出的处理结果看,实际运行时可能补了赋值,但核心问题是格式解析冲突)。

修正代码

import pandas as pd

# 模拟原始数据
data = {"Event Date": ["2020-07-16", "31/03/2022, 26/11/2018, 31/01/2028"]}
df = pd.DataFrame(data)

# 去除空格并拆分多日期
df["Event Date"] = df["Event Date"].str.replace(' ', '').str.split(",")
df = df.explode("Event Date")

# 自动识别日期格式转换,避免强制dayfirst导致格式冲突
df['Event Date'] = pd.to_datetime(df['Event Date'], infer_datetime_format=True, errors='coerce')

# 若需保留原始日期字符串格式(而非datetime类型),可使用以下代码
# df['Event Date'] = df['Event Date'].apply(
#     lambda x: pd.to_datetime(x, infer_datetime_format=True).strftime('%Y-%m-%d') 
#     if pd.notna(pd.to_datetime(x, infer_datetime_format=True, errors='coerce')) 
#     else x
# )

print(df)

处理后结果

Event Date
2020-07-16
2022-03-31
2018-11-26
2028-01-31

如果需要保留原始的日期字符串格式(比如31/03/2022),可以启用代码中注释的部分,转换后再转回对应字符串格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:20:33