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

Pandas读取CSV列名显示Unnamed及乱码问题解决方法

错误原因
  • 编码参数配置错误:代码中硬编码指定encoding='cp1252',与文件实际的UTF-16 LE BOM编码不匹配。文件开头的UTF-16 LE BOM标识(字节0xFF 0xFE)被cp1252编码错误解析为ÿþ两个乱码字符,附着在第一列首部;同时编码解析错位导致分隔符~识别逻辑异常,pandas无法正确切分首行存储的真实列名,最终出现第一列乱码、其余列全部被标记为Unnamed的全列异常,自然无法通过真实列名索引到对应字段,触发KeyError。
  • 列名拼写错误:代码中索引列使用的名称为OrdId,与文件实际存储的列名OrderID拼写不一致,即使编码配置正确,该拼写错误也会触发KeyError。
修复方案

调整read_csv的编码参数为适配UTF-16 LE BOM的取值,同时修正列名拼写即可,修正后的可运行代码如下:

import pandas as pd

df = pd.read_csv(
    filepath_or_buffer='/dbfs/FileStore/tables/MyDataFile.txt',
    sep='~',
    low_memory=False,
    quotechar='"',
    header=0,  # 显式指定首行为列名,替代默认的infer逻辑,稳定性更高
    encoding='utf-16'  # pandas可自动识别带BOM的UTF-16 LE/BE编码,无需额外指定带BOM的特殊编码值
)

# 使用和文件一致的正确列名索引
print(df['OrderID'])

验证方式:读取完成后执行print(df.columns.tolist()),如果输出列表正常显示FirstName/LastName/OrderID等真实列名,无乱码、无Unnamed标记列,即代表加载成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:21:21