python — dataframe — groupby — обработка негруппированного столбца в случае разницы

#python #pandas #pandas-groupby

#python #pandas #pandas-groupby

Вопрос:

У меня есть фрейм данных, содержащий идентификатор, и я хочу «сгруппировать по» на основе идентификатора. Мне также нужно сохранить все остальные столбцы (статические данные, строки) фрейма данных, поэтому изначально я включил все статические столбцы данных в group by. Однако в статических данных могут быть различия между 2 или более строками с одинаковым идентификатором (из-за другого источника). В этом случае я все равно хотел бы сгруппироваться по идентификатору и не создавать «дубликаты». Для столбца, имеющего разницу, я довольно равнодушен, сгруппированная строка может просто взять первую, с которой она сталкивается, из конфликтующих строк.

Надеюсь, эта иллюстрация прояснит:

пример

Есть предложения?

Комментарии:

1. итак, вам нужен уникальный data.frame и 1 запись на группу?

Ответ №1:

Вы можете использовать groupby().agg() и указать, что вы хотите сделать для каждого столбца в вашем фрейме данных в словаре. Основываясь на примере вашего предполагаемого результата, который будет:

 df.groupby('identifier').agg({'name': 'first', 'amount':'sum'})
  

Он принимает первое значение name столбцов и sums значения в amount столбце.