使用pandas的df.loc按行索引名称读取DataFrame时触发KeyError的问题求助
使用pandas的df.loc按行索引名称读取DataFrame时触发KeyError的问题求助
我正在创建下面的DataFrame,并且给行设置了索引名称,想要通过列名和行名来读取数据,但一直遇到KeyError,想请大家帮忙看看问题出在哪里。
创建DataFrame的代码
# propulsion, data from étudeAZEF excel sheet df_prop = pd.DataFrame({'Propulsion' : ['Helice s PF','Helice xL PF','Helice s PV', 'Helice xL PV','Helice sC/R PV'],'Mass [kg]' : [5, 10, 8, 25, 15],'Efficiency [%]' : [84, 80, 86, 82, 97],'Fixed cost [Euro]' : [2000, 4000, 5000, 6000, 7000],'Life [h]': [10000, 10000, 7000, 3000, 5000]}) df_prop.set_index('Propulsion') hour_cost = df_prop['Fixed cost [Euro]']/df_prop['Life [h]'] df_prop['Cost per hour [Euro/h]'] = hour_cost
读取数据的代码
# get column index ColumnName = "Efficiency [%]" # get line index LineName = "Helice xL PF" # get datapoint data = df_prop.loc[LineName,ColumnName]
遇到的错误
触发的错误信息:
KeyError: 'Helice xL PF'
我打印了两个变量,结果是符合预期的:
print(ColumnName) # 输出:Efficiency [%] print(LineName) # 输出:Helice xL PF
我已经确认ColumnName和LineName都是字符串类型,并且尝试了以下方法,但所有尝试都触发了相同的KeyError:
- 把
LineName的双引号改成单引号 - 修改行名,使用不带空格的名称(比如将某行改为
'Helice2',用这个名称读取仍报错) - 尝试读取其他行名(比如
"Helice xL PV") - 尝试读取不同的列
备注:内容来源于stack exchange,提问作者Susanne Svensdotter
相关产品推荐
相关产品推荐

