python - 在元素计数不等于 1 的组上过滤 DataFrame

标签 python pandas dataframe

我正在使用具有以下结构的 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/

相关文章:

python - 如何在数据框中查找字符串并创建一个新字符串?

python - 如何根据日期/月份将 pyspark 数据框中同一列上的行相乘?

python - 可变循环的时间复杂度

python - 无法在 docker 中导入我编译的 cython 模块

Python - 属性错误 : 'NoneType' object has no attribute 'get_text'

python - 获取另一列中每个唯一值的前 2 个值

python - conn.send ('Hi' .encode()) BrokenPipeError : [Errno 32] Broken pipe (SOCKET)

python - 根据当前数据帧中的约束生成数据帧列

python-2.7 - Python Pandas 数据框创建

python - 按顺序计算重复条目