删除 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
给定以下形式的数据框:
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