计算熊猫数据框中唯一组合的数量

时间:2019-04-24 08:39:54

标签: python pandas group-by combinations

我在为数据生成一些简单的汇总统计信息时遇到麻烦(大脑障碍)。

我想做的是计算所有“ id”中同时出现的“ code”值的数量。数据如下:

id    code  
1      A
2      A
2      B
3      A
3      B
4      A
5      A
5      C
6      A
6      B
6      C

所以输出看起来像这张表。或者,可能通过在原始数据“ combo-id”上为每个唯一组合添加一个分解列。

Combo    Count    combo-id
(A)      2        1
(A,B)    2        2
(A,C)    1        3
(A,B,C)  1        4

Here is a similar QA, but looking at unique pairs only

2 个答案:

答案 0 :(得分:2)

首先按组创建tuple,然后按GroupBy.size进行计数:

s = df.groupby('id')['code'].apply(tuple).rename('Combo')
#if duplicates don't matter, thank you @cripcate
#s = df.groupby('id')['code'].apply(set).rename('Combo')
df1 = s.groupby(s).size().reset_index(name='Count')
print (df1)
       Combo  Count
0       (A,)      2
1     (A, B)      2
2  (A, B, C)      1
3     (A, C)      1

答案 1 :(得分:-2)

尝试添加.unique()

  

Series.unique()[源代码]

Return unique values of Series object.

Uniques are returned in order of appearance. Hash table-based unique, therefore does NOT sort.

More here.