23

我有一个 pandas 数据框并将其按两列分组(例如col1col2)。对于col1and的固定值col2(即对于一个组),我可以在col3. 我想计算第三列中不同值的数量。

例如,如果我有这个作为我的输入:

1  1  1
1  1  1
1  1  2
1  2  3
1  2  3
1  2  3
2  1  1
2  1  2
2  1  3
2  2  3
2  2  3
2  2  3

我想将此表(数据框)作为输出:

1  1  2
1  2  1
2  1  3
2  2  1
4

2 回答 2

27
df.groupby(['col1','col2'])['col3'].nunique().reset_index()
于 2013-07-29T14:16:46.870 回答
21
In [17]: df
Out[17]: 
    0  1  2
0   1  1  1
1   1  1  1
2   1  1  2
3   1  2  3
4   1  2  3
5   1  2  3
6   2  1  1
7   2  1  2
8   2  1  3
9   2  2  3
10  2  2  3
11  2  2  3

In [19]: df.groupby([0,1])[2].apply(lambda x: len(x.unique()))
Out[19]: 
0  1
1  1    2
   2    1
2  1    3
   2    1
dtype: int64
于 2013-07-29T14:18:03.473 回答