python - Python pandas 数据框错误消息:KeyError: “[Index([('var2_1', 'var2_2')], dtype='object')] are in the [columns]”
问题描述
我正在使用 pandas 数据帧,并且遇到了我不理解的错误消息 。
在这个玩具示例中,我有一个数据框,它调用df
了许多列('var1_1'、'var1_2'、'var1_3'、'var2_1'、'var2_2'、'var3'),一个var_names1
用几个列调用的列表元素('var2'、'var3'、'var1')和一个名为df_list
.
我想循环var_names1
,以这样一种方式,例如当 for 的var_names1
值为 var2 时,我创建一个包含df
var2_1 和 var2_2 列的新数据框,最后将新数据框附加到df_list
.
当我运行代码时,我收到以下错误消息:KeyError: "None of [Index([('var2_1', 'var2_2')], dtype='object')] are in the [columns]"。
# TOY DATASET
cars = {'var1_1': [1, np.nan, np.nan, np.nan],
'var1_2': [np.nan, 1, 1, np.nan],
'var1_3': [np.nan, np.nan, 1, np.nan],
'var2_1': [1, np.nan, 1, np.nan],
'var2_2': [np.nan, 1, 1, np.nan],
'var3': [1, np.nan, 1, 1]
}
df = pd.DataFrame(cars, columns = ['var1_1', 'var1_2', 'var1_3', 'var2_1', 'var2_2', 'var3'])
print(df)
var1_1 var1_2 var1_3 var2_1 var2_2 var3
0 1.0 NaN NaN 1.0 NaN 1.0
1 NaN 1.0 NaN NaN 1.0 NaN
2 NaN 1.0 1.0 1.0 1.0 1.0
3 NaN NaN NaN NaN NaN 1.0
# CODE
root_names = ['var2', 'var3', 'var1']
df_list = []
for var in root_names:
match_names = [x for x in list(df) if re.match(var,x)]
temp_df = df[[match_names]]
df_list.append(temp_df)
# ERROR MESSAGE
KeyError: "None of [Index([('var2_1', 'var2_2')], dtype='object')] are in the [columns]"
但是,当我使用一些代码进行检查时(见下文),这些列似乎就在那里。有人可以解释错误信息。谢谢!
root_names = ['var2', 'var3', 'var1']
for var in root_names:
match_names = [x for x in list(df) if re.match(var,x)]
print(match_names)
# Output
['var2_1', 'var2_2']
['var3']
['var1_1', 'var1_2', 'var1_3']
df[['var2_1', 'var2_2']]
# Output
var2_1 var2_2
0 1.0 NaN
1 NaN 1.0
2 1.0 1.0
3 NaN NaN
解决方案
此错误表示 Dataframe 数据集中缺少某些列。尝试替换temp_df = df[[match_names]]
为temp_df = df[match_names]
.
您试图传递值列表的列表,而不是值列表(列名)
推荐阅读
- r - 如何在时间序列中找到负趋势
- bash - 在 bash 中使用条件重命名
- reactjs - 在反应中动态更改根元素有多糟糕
- mongodb - 使用 DocumentDB 数据迁移工具导入 Json 在 CosmosDB 中出现“获取文档代码页面时出错:400”
- bash - 修改 ${!i} 的值
- android - BillingClientImpl 中 onServiceConnected 的 ANR
- typescript - 如何使用通用接口?
- sql - SQL比较日期
- typescript - 如何修复“错误:捆绑失败:SyntaxError: { path }\PinCode\index.ts: Exporting local "IPinCodeParams",未声明。” 在 React-Native 中?
- javascript - 基于曾孙 javascript 隐藏 Div