У меня есть фрейм данных с заголовком uid, col1, col2
, где col1
имеет k1
уникальное значение (например, a,b,c
), col2
имеет k2
уникальное значение (например, «низкий», «высокий»). После группировки по uid
, если я хочу подсчитать количество col1=='a'
, я бы сделал это
df.groupby("uid")['col1'].apply(lambda group: sum(group=='a')).reset_index(name="a_cnt")
Если я хочу подсчитать количество col1=='a' and col2='low'
, я бы сделал это
df.groupby("uid")['col1', 'col2'].apply(lambda group: sum((group['col1']=='a') & (group['col2']=='low'))).reset_index(name="a_low_cnt")
Любой другой эффективный способ сделать это?