У меня проблема с рамкой данных pandas. У меня есть кадр данных с тремя столбцами, первые 2 - идентификаторы (str), а третий - число.Группа без потери столбца
Я хотел бы сгруппировать его, чтобы я получил первый столбец третий как max, а второй столбец, соответствующий индексу.
Это не совсем понятно, поэтому давайте приводим пример. Моя dataframe выглядит следующим образом:
id1 id2 amount
0 first_person first_category 18
1 first_person second_category 37
2 second_person first_category 229
3 second_person third_category 23
Код для него, если вам нужно:
df = pd.DataFrame([['first_person','first_category',18],['first_person','second_category',37],['second_person','first_category',229],['second_person','third_category',23]],columns = ['id1','id2','amount'])
И я хотел бы получить:
id1 id2 amount
0 first_person second_category 37
1 second_person third_category 229
Я попробовал метод GroupBy, но заставляет меня освободить вторую колонку:
result = df.groupby(['id1'],as_index=False).agg({'amount':np.max})
'df.groupby ([«id1»], as_index = False) .max() '- это то, что вы хотите? – MaxU
Дело в том, что это не каждый раз, когда последняя категория соответствует самой большой сумме (* отредактировал мой пост, чтобы он дал понять). – ysearka
@MaxU подумал, что это тоже будет первое, но оно возвращает максимальные значения как 'id2', так и 'amount', а не строка с максимумом' amount'. –