首页 > 解决方案 > 在 Pandas Dataframe 中查找多列(不是所有列)中具有相同值的行

问题描述

下面是我的数据框:

X1  X2  X3  X4  X5
A   B   C   10  BAM
A   A   A   12  BAM
B   B   B   10  BAM
A   B   B   60  BAM

我希望那些same values 行在columns(X1, X2,X3). 在这里我们可以看到2nd3rd以上 3 列的行具有相同的值。我想要的输出是:

 X1 X2  X3  X4  X5
A   A   A   12  BAM
B   B   B   10  BAM

我尝试如下:

yourdf1=df[df.nunique(0)==0]
print(yourdf1)

但在这里我得到一个错误。谁能帮帮我。

标签: pythonpandasdataframe

解决方案


选择列表中的列以测试每行唯一值的数量,axis=1DataFrame.nunique测试1过滤器boolean indexing

yourdf1 = df[df[['X1','X2','X3']].nunique(axis=1) == 1]
print(yourdf1)
  X1 X2 X3  X4   X5
1  A  A  A  12  BAM
2  B  B  B  10  BAM

另一种解决方案是使用DataFrame.eq过滤DataFrame,按第一列进行比较,并通过以下方式获取每行的所有 True DataFrame.all

df1 = df[['X1','X2','X3']]
yourdf1 = df[df1.eq(df1.iloc[:, 0], axis=0).all(axis=1)]
print(yourdf1)

  X1 X2 X3  X4   X5
1  A  A  A  12  BAM
2  B  B  B  10  BAM

推荐阅读