为每个ID过滤特定变量中具有相同值的行-Pandas

qwe*_*rty 2 pandas

我想针对数据帧中的每个ID排除特定二进制变量(“ Y”)中具有相同值的行。这意味着,如果ID在Y中具有相同的值(仅0或仅1),则应将其排除。

数据说明:

ID  X   Y
a   ..  0
a   ..  0
a   ..  0
b   ..  1
b   ..  0
b   ..  1
b   ..  0
c   ..  1
c   ..  1
c   ..  1
c   ..  1
Run Code Online (Sandbox Code Playgroud)

预期结果:

ID  X   Y
b   ..  1
b   ..  0
b   ..  1
b   ..  0
Run Code Online (Sandbox Code Playgroud)

ank*_*_91 6

使用groupby()IDtransform作为nunique,然后过滤行比1的结果更大:

df[df.groupby('ID')['Y'].transform('nunique')>1]
Run Code Online (Sandbox Code Playgroud)
  ID   X  Y
3  b  ..  1
4  b  ..  0
5  b  ..  1
6  b  ..  0
Run Code Online (Sandbox Code Playgroud)