pd.to_datetime转换月份年字符串时报unconverted data remains错误如何解决
错误原因
你爬取得到的Name列字符串末尾带有多余空白字符,你指定的匹配格式%B %Y只能匹配「月份英文全称+空格+4位年份」的组合,末尾多出的空白无法被格式匹配,因此抛出残留未转换数据的报错。
解决方案
- 先清理
Name列前后的所有空白字符
df['Name'] = df['Name'].str.strip()
- 再执行日期转换操作,根据你的需求选择对应写法:
- 如果你需要的是pandas datetime类型(会自动补全为当月第一天的日期格式,可直接用于时间序列计算):
df['Name'] = pd.to_datetime(df['Name'], format='%B %Y')
- 如果你需要的是
YYYY-MM-DD格式的字符串:
df['Name'] = pd.to_datetime(df['Name'], format='%B %Y').dt.strftime('%Y-%m-%d')
如果清理空白后仍有报错,可以给pd.to_datetime添加errors='coerce'参数,转换失败的行就会被赋值为NaT空值,方便你定位异常数据行:
df['Name'] = pd.to_datetime(df['Name'], format='%B %Y', errors='coerce')
内容的提问来源于stack exchange,提问作者younggotti
相关产品推荐
相关产品推荐

