Pandas保留列名不在另一数据框的列时出现KeyError:False问题
问题解决:筛选不在指定数据框中的列
错误原因
- 你把布尔值和字符串
"False"做比较:isin()返回的是布尔类型数组(元素是True/False),不是字符串,用== "False"会得到全为False的数组。 - 直接用这个全
False的数组索引数据框时,Python会把它当成列名去查找,而你的数据框里没有名为False的列,因此触发KeyError。
正确代码写法
两种可行的写法:
- 用
~符号取反(更简洁的写法)
mrna_NONCIMP_df = all_kirpII_rna.loc[:, ~all_kirpII_rna.columns.isin(mrna_cimp.columns)]
- 用
!= True明确取反
mrna_NONCIMP_df = all_kirpII_rna.loc[:, all_kirpII_rna.columns.isin(mrna_cimp.columns) != True]
使用 .loc[:, 布尔数组] 是为了明确指定选择所有行和符合条件的列,避免索引逻辑出现歧义。
内容的提问来源于stack exchange,提问作者melolilili
相关产品推荐
相关产品推荐

