我想针对数据帧中的每个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)
使用groupby()上ID和transform作为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)