Pandas每个分组中的前n个值

8

我有一个类似的数据框

item      date       hour     value
  a         4         12       123
  a         6         11        54
  b         1          7       146
  c         8          1        97
  a         9          5        10
  c         4          5       114
  b         1          7       200
...       ...        ...       ...

我希望保留前10个value最高的item(丢弃其他数据),无论其他列如何。它们没有排序。

根据我的输入示例,由于我没有写足够的内容来获取每个item的前10项,如果我想要排名第一的前1项,则预期输出应该类似于:

item      date       hour     value
  a         4         12       123
  c         4          5       114
  b         1          7       200
...       ...        ...       ...

我看过这个答案,但我不确定如何告诉pandas要使用value进行计算。


你能提供一个输入数据框架和期望的输出的例子吗? - SEDaradji
1
df.groupby('item')['value'].nlargest(10) 这个函数会显示每个‘item’对应的前10个最大值,但有些重复的选项可能覆盖了其他选项。 - user3483203
1个回答

12

您可以通过['item', 'value']进行sort_values,然后再使用groupby.head

df.sort_values(['item', 'value'], ascending=False).groupby('item').head(10)

或使用 nlargest:

df.groupby('item').value.nlargest(10).reset_index()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接