Groupby并在一个数据框架中查找每组前10%的记录

2024-05-14 18:17:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个新的数据帧,其中包含每组count记录的前10%。你知道吗

初始df的示例如下:

date        name       count
2014-12-14  Jerry      1
2014-12-21  Jerry      2
2015-01-11  Jerry      3
2015-02-01  Jerry      4
2015-02-08  Jerry      5
2015-03-01  Jerry      6
2015-03-08  Jerry      7
2015-03-15  Jerry      8
2015-03-22  Jerry      9
2015-04-26  Jerry      10
2014-12-14  Tom        1
2014-12-21  Tom        2
2015-01-11  Tom        3
2015-02-01  Tom        4
2015-02-08  Tom        5
2015-03-01  Tom        6
2015-03-08  Tom        7
2015-03-15  Tom        8
2015-03-22  Tom        9
2015-04-26  Tom        10

上面的DataFrame只是完整DataFrame的一个片段,其中包含许多名称,每个名称在一年期间包含每周的count信息。你知道吗

我想要的输出如下。你知道吗

date        name       count
2015-04-26  Jerry      10
2015-04-26  Tom        10

如果有任何帮助,我将不胜感激。你知道吗


Tags: 数据name名称信息示例dataframedfdate
1条回答
网友
1楼 · 发布于 2024-05-14 18:17:07

首先是^{},然后是^{},使用自定义lambda函数按每个组的行获取10%

df1 = (df.sort_values(['name','count'], ascending=[True, False])
         .groupby('name', group_keys=False)
         .apply(lambda x: x.head(int(len(x) / 10))))
print (df1)
          date   name  count
9   2015-04-26  Jerry     10
19  2015-04-26    Tom     10

相关问题 更多 >

    热门问题