检查每个组是否存在一个值,并删除 pandas df 中没有该值的组

sam*_*son 2 python dataframe pandas

我有一个 pandas df ,如下所示:

import pandas as pd
d = {'value1': [1, 1, 1, 2, 3, 3, 4, 4, 4, 4], 'value2': ['A', 'B', 'C', 'C', 'A', 'B', 'B', 'A', 'A', 'B']}
df = pd.DataFrame(data=d)
df
Run Code Online (Sandbox Code Playgroud)

value1我想检查列中的每个组是否在列中至少包含一个值“C” value2。如果某个组没有“C”值,我想排除该组

    value1  value2
    1       A
    1       B
    1       C
    2       C
    3       A
    3       B
    4       B
    4       A
    4       A
    4       B
Run Code Online (Sandbox Code Playgroud)

结果 df 应如下所示:

    value1  value2
    1       A
    1       B
    1       C
    2       C
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

Pan*_*Kim 5

使用groupby filter

df.groupby('value1').filter(lambda x: x['value2'].eq('C').sum() > 0)
Run Code Online (Sandbox Code Playgroud)