使用df['列名','列名']形式打印Pandas DataFrame时出现KeyError求助
解决Pandas中
df['PDS','SE']引发的KeyError问题 错误原因
Pandas的DataFrame单中括号[]有明确的使用规则:
- 传入单个字符串时,返回对应列的Series
- 传入列名列表时,返回包含指定列的DataFrame
你写的df['PDS','SE']本质是把元组('PDS','SE')作为键去查找列,但你的DataFrame列名都是单个字符串('PDS'、'SE'等),不存在名为('PDS','SE')的列,因此直接触发KeyError。
解决方法
有两种可行的修改方式:
方式1:使用双中括号包裹列名列表
把多个列名放在列表里,再用双中括号访问:
#Data Frames code import numpy as np import pandas as pd randArr = np.random.randint(0,100,20).reshape(5,4) df =pd.DataFrame(randArr,np.arange(101,106,1),['PDS','Algo','SE','INS']) print(df[['PDS','SE']]) # 双中括号+列名列表
方式2:使用.loc方法(推荐)
.loc是Pandas官方推荐的标签式索引方法,语法更清晰,能明确指定行和列的范围:
#Data Frames code import numpy as np import pandas as pd randArr = np.random.randint(0,100,20).reshape(5,4) df =pd.DataFrame(randArr,np.arange(101,106,1),['PDS','Algo','SE','INS']) print(df.loc[:, ['PDS','SE']]) # : 表示取所有行,列表指定要取的列
两种方式都能正确返回包含PDS和SE两列的DataFrame,不会触发KeyError。
内容的提问来源于stack exchange,提问作者Subrata Biswas
相关产品推荐
相关产品推荐

