满足条件时删除所有组行?

Drop all group rows when met a condition?

我有 pandas 数据框有基于“col10”和“col1”的两级组。我想要做的是,如果指定值在另一列重复或组中不存在该值(只保留指定值存在一次的组)例如:

我需要在这个原始 DF

中保留组的行,例如 (['A',1],['A',2],['B',2])

结果是

col0  col1
A     1        True
      2        True
B     1       False
      2        True
c     1       False
dtype: bool

如何根据这个布尔值创建所需的 Df?

您可以按如下方式进行:

m=(df.groupby(['col0','col1'])['col2'].
     transform(lambda x: np.where((x.eq(1)).sum()==1,x,np.nan)).dropna().index)
df.loc[m]

或者:

df[df.groupby(['col0','col1'])['col2'].transform(lambda x: x.eq(1).sum()==1)]

   col0  col1  col2
0     A     1     1
1     A     1     2
2     A     2     1
3     A     2     2
4     A     2     3
12    c     1     1