分享
三行代码  ›  专栏  ›  技术社区  ›  cmed123

在另一列中,每个组的熊猫频率值最高

  •  1
  • cmed123  · 技术社区  · 5 天前

        id color    size  test
    0   0  blue  medium     1
    1   1  blue   small     2
    2   5  blue   small     4
    3   2  blue     big     3
    4   3   red   small     4
    5   4   red   small     5
    

    我想要的结果是:

    color size
    blue  small
    red   small
    

    我试过:

    df = df[['id', 'color', 'size']]
    df = df.groupby(['color'])['size'].value_counts()
    

    得到这个:

    color  size  
    blue   small     2
           big       1
           medium    1
    red    small     2
    Name: size, dtype: int64
    

    基本上,对于每一组“颜色”,我想要频率最高的“大小”。我真的有很多麻烦。有什么建议吗?非常感谢。

    1 回复  |  直到 5 天前
        1
  •  2
  •   YOBEN_S    5 天前

    sort_values 这个 groupby 具有 tail

    s=df.groupby(['color','size']).size().sort_values().groupby(level=0).tail(1).reset_index()
      color   size  0
    0  blue  small  2
    1   red  small  2