Pandas如何检查列名列表中哪些列不存在于DataFrame中
错误原因
- 你使用的
l not in df.columns写法是将整个列表l作为单个元素,判断是否存在于df.columns的列名集合中,in运算符不支持传入列表作为待判断的单个元素,因此触发TypeError: unhashable type: 'list'报错。
正确实现方法
方法1:列表推导式(保留列名在原列表l中的顺序)
直接遍历列表l的每一个列名,逐一判断是否不在df的列中:
missing_cols = [col for col in l if col not in df.columns] print(missing_cols)
运行后输出和你预期一致:
['Col_C', 'Col_E', 'Col_F']
方法2:集合差集运算(适合列数量大的场景,运算速度更快)
利用集合的差集特性直接取不在df列中的元素,注意该方法输出结果不保留原列表l的顺序:
missing_cols = list(set(l).difference(df.columns)) # 或者简写为 list(set(l) - set(df.columns)) print(missing_cols)
内容的提问来源于stack exchange,提问作者disukumo
相关产品推荐
相关产品推荐

