首页 > 解决方案 > Pandas DataFrame 基于布尔条件的分组选择列

问题描述

我想通过唯一的列名对数据框进行分组,并为每个组计算另一列,但前提是满足第三列的条件:

这将是三列:

df = pd.DataFrame({'col1':['a','b','b'], 'col2':['c1', 'c2', 'c3'], 'col3':[20,10,20]})

数据框

ToDo: count col2 for grouped by col1 if col3 == 20
我设法分 3 步完成:

df = df.set_index(['col1'])
df = df.loc[df['col3']==20,'col2']
df.groupby(level=0).count().idxmax()

但我想知道是否可以在一行中使用 lambda 表达式来做到这一点:)

标签: pythonpandasgroup-by

解决方案


您可以先过滤,然后分组和计数:

df[df['col3']==20].groupby('col1')['col2'].count()

推荐阅读