删除另一列中具有多个唯一值的组

时间:2019-01-04 10:25:24

标签: python pandas dataframe group-by pandas-groupby

我有一个优秀的人

Name   X    Y
A      5    9
B      5    10
C      7    9
D      7    9
E      5    10
F      5    8

我想删除在Y列中具有重复值但在X列中具有不同值的行。 (换句话说,如果一个Y值中有多个X值,则删除所有这些行) 结果应该是:

Name   X    Y
B      5    10
E      5    10
F      5    8

1 个答案:

答案 0 :(得分:1)

groupbytransform"nunique"一起使用,并在X中过滤出具有1个以上唯一值的组:

df[df.groupby('Y').X.transform('nunique') == 1]

  Name  X   Y
1    B  5  10
4    E  5  10
5    F  5   8

相似的解决方案,使用map广播结果:

df[df.Y.map(df.groupby('Y').X.nunique()) == 1]

  Name  X   Y
1    B  5  10
4    E  5  10
5    F  5   8