使用Pandas读取CSV构建AI模型时遭遇KeyError问题求助
KeyError问题排查与解决
问题原因
- 多列选取语法错误:你的代码中选取多列时使用了
data['col1','col2']的格式,这会被pandas识别为一个元组类型的键去查找列,但DataFrame中不存在这个元组作为列名,因此触发KeyError。正确的多列选取应该用列表包裹列名,即data[['col1','col2']]。 - 重复列名导致的列名变化:你的CSV数据中存在重复列名(比如
Butane、Alkylate等出现两次),pandas读取时会自动为重复列名添加后缀(如Butane.1、Alkylate.1),原代码中直接使用原始重复列名会找不到对应的列。
修正后的代码
import pandas as pd # 读取数据 data = pd.read_csv(r'F:\OMS-Development\Python-AI Models\AI Model FHR-RVP Data.csv') # 查看实际列名(可选,用于确认重复列的后缀) print(data.columns.tolist()) # 正确选取多列(注意处理重复列名的后缀) X = data[['BatchID', 'Butane', 'Alkylate', 'Virgin_Naphtha', 'Hydrotreated_Heavy_Naphtha', 'Light_hydrocracked_Naphtha', 'Light_hydrotreated_Naphtha', 'Butane.1', 'Alkylate.1', 'Virgin_Naphtha.1', 'Hydrotreated_Heavy_Naphtha.1', 'Light_hydrocracked_Naphtha.1', 'Light_hydrotreated_Naphtha.1', 'RVP_Blend']]
额外注意事项
- 运行
print(data.columns.tolist())可以查看pandas实际读取到的列名,确认重复列的后缀,避免因列名不匹配导致错误。 - 如果业务逻辑中重复列代表不同含义(比如前一组是比例,后一组是实际值),建议提前修改CSV表头为唯一名称(如
Butane_Ratio、Butane_Value),避免后续处理混淆。
内容的提问来源于stack exchange,提问作者Suresh Agrawal
相关产品推荐
相关产品推荐

