我正在使用具有以下结构的 DataFrame:
import pandas as pd
df = pd.DataFrame({'group':[1,1,1,2,2,2,2,3,3,3],
'brand':['A','B','X','C','D','X','X','E','F','X']})
print(df)
group brand
0 1 A
1 1 B
2 1 X
3 2 C
4 2 D
5 2 X
6 2 X
7 3 E
8 3 F
9 3 X
我的目标是仅查看与恰好一个品牌 X
关联的群组。由于第 2 组有两个等于品牌 X
的观察值,因此应从生成的 DataFrame 中将其过滤掉。
输出应如下所示:
group brand
0 1 A
1 1 B
2 1 X
3 3 E
4 3 F
5 3 X
我知道我应该在组列上执行groupby
,然后过滤那些X
计数不同于1的组。过滤部分是我遇到困难的地方。任何帮助,将不胜感激。
最佳答案
使用series.eq
检查 brand
是否等于 X
,然后进行 groupby 和 transform
sum
并过滤其中 的组X
计数等于 1:
df[df['brand'].eq('X').groupby(df['group']).transform('sum').eq(1)]
<小时/>
group brand
0 1 A
1 1 B
2 1 X
7 3 E
8 3 F
9 3 X
关于python - 在元素计数不等于 1 的组上过滤 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768259/