这是我的数据框:
df = pd.DataFrame({'sym': list('aaaaaabb'), 'key': [1, 1, 1, 1, 2, 2, 3, 3], 'x': [100, 100, 90, 100, 500, 500, 700, 700]})
我将它们按key
和sym
分组:
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
答案 0 :(得分:3)
将GroupBy.transform
与SeriesGroupBy.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