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

使用pandas.read_csv的parse_dates参数报错:指定列缺失

问题解决:pandas.read_csv 解析日期列报错找不到指定列

报错核心原因是 pandas 无法匹配到你指定的日期列,大概率是 CSV 文件的实际列名与你定义的 date_cols 存在差异(比如隐藏空格、大小写不一致),或是表头位置不正确。以下是具体解决步骤:

1. 先确认 CSV 文件的实际列名

先跳过日期解析,读取文件并打印所有列名,排查是否和你定义的 date_cols 完全一致:

import pandas as pd
df = pd.read_csv('CAMBIAMOVA', delimiter=';')
print("文件实际列名:", df.columns.tolist())

如果输出的列名带有前后空格(比如 ' Data di fine '),说明需要先清理列名。

2. 清理列名后再解析日期

如果列名存在多余空格,可先读取文件并处理列名,再转换日期:

date_cols = ['Data di fine', 'Data di inizio', 'Prenotata']

# 读取文件并去除列名前后的空格
df = pd.read_csv('CAMBIAMOVA', delimiter=';')
df.columns = df.columns.str.strip()

# 转换日期列
df[date_cols] = df[date_cols].apply(pd.to_datetime)

也可以直接在 read_csv 中一次性处理:

date_cols = ['Data di fine', 'Data di inizio', 'Prenotata']

df = pd.read_csv(
    'CAMBIAMOVA',
    delimiter=';',
    dtype={"N. di neonati": int},
    parse_dates=date_cols,
    converters={col: lambda x: x.strip() for col in date_cols}
)

3. 检查表头位置是否正确

如果 CSV 文件开头有注释行或空行,导致表头不在第一行,需要指定 skiprows 参数跳过前置行(比如表头在第二行就加 skiprows=1):

df = pd.read_csv(
    'CAMBIAMOVA',
    delimiter=';',
    dtype={"N. di neonati": int},
    parse_dates=date_cols,
    skiprows=1
)

另外,不需要在 dtype 里把日期列指定为 str,parse_dates 会自动解析符合 YYYY-MM-DD 格式的字符串,去掉该设置反而能避免类型冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:29:50