根据条件忽略熊猫groupby中的组

时间:2019-04-14 15:55:36

标签: python pandas

这是我的数据框:

df = pd.DataFrame({'sym': list('aaaaaabb'), 'key': [1, 1, 1, 1, 2, 2, 3, 3], 'x': [100, 100, 90, 100, 500, 500, 700, 700]})

我将它们按keysym分组:

groups = df.groupby(['key', 'sym'])

现在,我要检查每个组中的所有x是否相等。如果它们不相等,我想将其从df中删除。在这种情况下,我想省略第一组。 这是我想要的df

   key sym    x
4    2   a  500
5    2   a  500
6    3   b  700
7    3   b  700

1 个答案:

答案 0 :(得分:3)

GroupBy.transformSeriesGroupBy.nunique一起使用,并按1进行比较,按boolean indexing进行过滤:

df1 = df[df.groupby(['key', 'sym'])['x'].transform('nunique').eq(1)]
print (df1)

  sym  key    x
4   a    2  500
5   a    2  500
6   b    3  700
7   b    3  700