gpt4 book ai didi

每组中的 Pandas 前 N 条记录按列值排序

转载 作者:行者123 更新时间:2023-12-01 11:14:46 25 4
gpt4 key购买 nike

import pandas as pd
d = {
'resource': [1,2,3,4,5,6,7],
'branch': ['a', 'b', 'c', 'a', 'a', 'c', 'b'],
'utilization': [0.7, 0.76, 0.9, 0.3, 0.55, 0.87, 0.71]
}
df = pd.DataFrame(data=d)

我需要按分支显示前 2 个使用的资源

像这样:

df.groupby('branch')[['resource', 'utilization']].nlargest(2, 'utilization')

我尝试了以下方法:

f = lambda x: x.sort_values('utilization', ascending=False)
df.groupby('branch', sort=False).apply(f).nlargest(3, 'utilization')

但当我需要每个组中的前 N ​​名

时,它会为我提供所有记录中的前 3 名
        resource    branch  utilization
branch
c 2 3 c 0.90
5 6 c 0.87
b 1 2 b 0.76

最佳答案

可以使用 sort_values + tail

df.sort_values('utilization').groupby('branch').tail(2)
branch resource utilization
4 a 5 0.55
0 a 1 0.70
6 b 7 0.71
1 b 2 0.76
5 c 6 0.87
2 c 3 0.90

关于每组中的 Pandas 前 N 条记录按列值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com