我有数据农场 df:
id name number
1 sam 76
2 sam 8
2 peter 8
4 jack 2
我想按“id”列分组并根据(名称,数字)对计算唯一值的数量?
id count(name-number)
1 1
2 2
4 1
我试过这个,但它不起作用:
df.groupby('id')[('number','name')].nunique().reset_index()
原文由 UserYmY 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将两个
groupby
组合起来以获得所需的结果。第一个
groupby
将计算完整的原始组合集(从而使您要计算的列唯一)。第二个groupby
将计算你想要的每个列的唯一出现次数(你可以使用第一个groupby
将该列放入索引中的事实)。结果将是一个系列。如果您希望 DataFrame 具有正确的列名(如您在所需结果中所示),您可以使用
aggregate
函数: