在 Pandas Dataframe 中的多列(不是所有列)中查找具有相同值的行

ssp*_*ssp 3 python dataframe pandas

以下是我的数据框:

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
Run Code Online (Sandbox Code Playgroud)

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

 X1 X2  X3  X4  X5
A   A   A   12  BAM
B   B   B   10  BAM
Run Code Online (Sandbox Code Playgroud)

我试过如下:

yourdf1=df[df.nunique(0)==0]
print(yourdf1)
Run Code Online (Sandbox Code Playgroud)

但在这里我收到一个错误。任何人都可以帮助我。

jez*_*ael 8

通过选择列表中的每行的唯一值的测试数列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
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是DataFrame.eq与过滤一起使用DataFrame,按第一列比较并通过以下方式获取每行的所有真值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
Run Code Online (Sandbox Code Playgroud)