删除 pandas 数据框中具有多个关联的条目?

Remove entries with multiple associations in a pandas dataframe?

给定以下形式的数据框:

id name

1  a
1  b
2  c
2  a
2  d
3  a
3  d
4  a

在这里,假设“a”与超过 3 个(任意)ID 相关联。所以结果应该是这样的:(删除所有 names 超过 3 个关联)

id name

1  b
2  c
2  d
3  d

我该怎么办?

  • name 分组并计算唯一值 id
  • 压缩过滤以限制小于或等于 3 的那些
  • 仅查找压缩名称中的那些名称

u = df.groupby(['name']).id.nunique()
df[df.name.isin(u.compress(lambda x: x <= 3).index)]

   id name
1   1    b
2   2    c
4   2    d
6   3    d