我有一个类似的数据框
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
... ... ... ...
,我想保持item
的前10名value
(将其余的都丢弃),而不考虑其他任何列。它们没有排序。
在我的输入示例之后,由于我编写的内容不足以使每个项目都得到10,因此如果我想要前1个,则预期的输出将是这样的:
item date hour value
a 4 12 123
c 4 5 114
b 1 7 200
... ... ... ...
我已经看过这个answer,但是我不确定如何告诉大熊猫以value
进行计算。
答案 0 :(得分:1)
您可以同时['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()