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
相关产品推荐
相关产品推荐

