Select 或根据条件删除类别

Select or drop categories based on condition

我有这个示例数据集:

我想做的是查看 ID 列中哪些类别的值严格高于 45,同时向我显示其他类别的值。所以它应该告诉我 ID 'a' 和 'd' 符合我的标准,而 'b' 和 'c' 不在其中。之后,我将删除行 'b' 和 'c'

最简单的方法是什么?

我试过了

def filter_func(x):
     return x['vals']>45

df.groupby('id').filter(filter_func)
df['id'].unique()

but I get this error:
filter function returned a Series, but expected a scalar bool

你可以这样试试:

df2 = df.groupby('id').min().reset_index()
df2.loc[df2['vals'] > 45]['id']