使用Pandas读取CSV时出现KeyError: 'NOX'的原因及解决方法
读取NOX/NO2列时出现KeyError的原因及解决方法
错误原因
- 分隔符设置错误:你的CSV文件实际用**逗号(
,)**分隔字段,但代码里指定了sep='\t'(制表符),导致pandas把每一行内容当成单个列,自然找不到NOX、NO2这些列名。 - 表头处理错误:代码中设置了
header=None,这会让pandas把CSV的第一行(原本的表头行)当成普通数据行,自动给列分配数字索引(0、1、2...),所以用字符串'NOX'作为列名访问时会触发KeyError。
解决方法
修正pd.read_csv的参数,让它正确识别CSV的格式:
- 移除
header=None,让pandas自动将第一行作为列名; - 将
sep='\t'改为sep=','(或者直接省略该参数,pandas默认会自动检测逗号分隔的CSV); - 无需手动调用
open(),pd.read_csv可以直接接收文件名作为参数,代码更简洁。
修正后的完整代码:
import matplotlib.pyplot as plt import pandas as pd import seaborn as sns # 直接读取CSV,自动识别表头和逗号分隔符 data = pd.read_csv('Air Pollutants.csv', encoding='utf-8') NOX = data['NOX'] NO2 = data['NO2'] sns.kdeplot(NOX, shade=True, color="orange") sns.kdeplot(NO2, shade=True, color="blue") plt.show()
内容的提问来源于stack exchange,提问作者Jesse Ko
相关产品推荐
相关产品推荐

