首页 > 解决方案 > 删除与 Pandas 中的列名具有相同值的行

问题描述

我想要删除与 Pandas 中的列名具有相同值的行。我正在考虑制作我的数据框的嵌套数组并循环遍历该数组并检查嵌套数组是否与我的 df.columns 相同。但也许有一些更快的方法?

df = pd.DataFrame({"ColA":[1,3,"ColA",1],
                   "ColB":[5,1,"ColB",2],
                   "ColC":[1,5,"ColC",2]})

print(df)

   ColA  ColB  ColC
0     1     5     1
1     3     1     5
2  ColA  ColB  ColC
3     1     2     2

我的结果应该是这样的:

   ColA  ColB  ColC
0     1     5     1
1     3     1     5
3     1     2     2

应删除第 2 行

标签: pythonpandas

解决方案


您可以通过eq, with any(任何单元格包含列名)或all(每个单元格的所有单元格都包含列名)

df[~df.eq(df.columns).any(1)]
  ColA ColB ColC
0    1    5    1
1    3    1    5
3    1    2    2

推荐阅读