【问题标题】:count the number of unique combinations in pandas data frame计算熊猫数据框中唯一组合的数量
【发布时间】:2019-04-24 08:39:53
【问题描述】:

我在为我的数据生成一些简单的汇总统计数据时遇到了麻烦(大脑阻塞)。

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

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

【问题讨论】:

    标签: python pandas group-by combinations


    【解决方案1】:

    首先为每个组创建tuples,然后通过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 表示这款时尚(或多或少)的单线。如果重复无关紧要,您也可以使用set(x) 而不是tuple(x)
    【解决方案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.

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2022-07-21
      相关资源
      最近更新 更多