代码之家  ›  专栏  ›  技术社区  ›  HHH

如何在pandas中的聚合函数中创建并查找列的频率

  •  0
  • HHH  · 技术社区  · 7 年前

    我有一个dataframe,我想做一个groupby两列,然后创建一个字典,它的值和频率作为聚合函数。这就是我的数据看起来的样子

    A, B, C
    -------
    1, 2, V
    1, 2, V
    1, 2, B
    1, 3, V
    1, 3, B
    1, 3, B
    

    我想参加群比 A B 并创建一个显示列频率的字典 C . 这是我的最终数据帧的外观:

    A, B, C
    -------
    1, 2, {V:2, B:1}
    1, 3, {V:1, B:2}
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   BENY    7 年前

    使用 groupby value_counts + to_dict

    df=df.groupby(['A','B']).C.apply(lambda x : [x.value_counts().to_dict()]).str[0].reset_index()
    df
    Out[73]: 
       A  B                 C
    0  1  2  {'V': 2, 'B': 1}
    1  1  3  {'B': 2, 'V': 1}
    
    df.C.str.len()
    Out[75]: 
    0    2
    1    2
    Name: C, dtype: int64