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')
но это дает мне топ-3 по всем записям, когда мне нужно топ-N в каждой группе
resource branch utilization
branch
c 2 3 c 0.90
5 6 c 0.87
b 1 2 b 0.76