为了账号安全,请及时绑定邮箱和手机立即绑定

如何在分组数据帧中获取每个组的前5个项目?

如何在分组数据帧中获取每个组的前5个项目?

慕森王 2022-08-02 15:44:47
df = pd.DataFrame({'Weekday':list('MMMMMMMMMMTTTTTTTTTT'),                  'Items': list("AAABBCDEFGBBBCCADEFG")                  })grouped = df.groupby(['Weekday','Items'],sort=True).agg({'Items': 'count'})然后,我得到分组的结果:Weekday Items       M       A          3        B          2        C          1        D          1        E          1        F          1        G          1T       A          1        B          3        C          2        D          1        E          1        F          1        G          1因此,如何为每个“工作日”输出前5个项目(“M”和“T”为5),例如:Weekday Items       M       A          3        B          2        C          1        D          1        E          1T        B          3        C          2        A          1        D          1        E          1任何人都可以帮忙吗?
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

df = pd.DataFrame({'Weekday':list('MMMMMMMMMMTTTTTTTTTT'),

              'Item': list("AAABBCDEFGBBBCCADEFG")

              })


grouped = df.groupby(['Weekday','Item'],sort=True).agg(count=('Item', 'count'))


grouped.sort_values(['Weekday','count'],ascending=False).groupby('Weekday').head(5)



           count

Weekday Item    

   T    B   3

        C   2

        A   1

        D   1

        E   1

    M   A   3

        B   2

        C   1

        D   1

        E   1


查看完整回答
反对 回复 2022-08-02
?
湖上湖

TA贡献2003条经验 获得超2个赞

 grouped = (df.groupby(['Weekday','Items'])

            .Items.agg(counter='count')

            .groupby(['Weekday'],

            as_index=False))


pd.concat([group.nlargest(5,'counter') for name,group in grouped])


              counter

Weekday Items   

M       A       3

        B       2

        C       1

        D       1

        E       1

T       B       3

        C       2

        A       1

        D       1

        E       1

分组两次,首先获取计数器变量。第二个组允许通过组进行迭代,以使用 nlargest 获得前 5 个。最后一步是将列表中的数据帧合并为一个。


vb_rise的解决方案应该更快,因为它避免了迭代过程。


查看完整回答
反对 回复 2022-08-02
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信