У меня есть такой фрейм данных:
df = pd.DataFrame({'year': [2018, 2018, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019, 2019],
'label': ['A', 'B', 'C', 'A', 'B', 'D', 'A', 'E', 'F', 'G', 'E', 'E'],
'cat' : [236, 546, 671, 555, 871, 229, 811, 992, 227, 341, 701, 508],
'value': [2, 5, 6, 1, 9, 4, 7, 8, 13, 11, 3, 12]})
И я хотел бы сгруппировать его по year
и label
и вернуть для каждой группы строку с наименьшим значением для value
.Строка должна включать (исходное) значение индекса, а также все столбцы (от df
).
Итак, результат должен выглядеть следующим образом:
3 2018 A 555 1
1 2018 B 546 5
2 2018 C 671 6
5 2018 D 229 4
6 2019 A 811 7
10 2019 E 701 3
8 2019 F 227 13
9 2019 G 341 11
Мой код такfar:
df.groupby(by=['year', 'label']).min().reset_index()
Это имеет правильные значения для value
, но не для cat
.Также отсутствует (оригинальный) индекс.
Есть предложения, как решить эту проблему?