Как суммировать строки по идентификатору и столбцу значения?

#python #python-3.x #dataframe

Вопрос:

У меня есть столик:

 ID     type       value
a1    income       100
a1    income       70
bb    spending     30
bb    spending     20
 

Как суммировать столбцы с тем же идентификатором по значению, что и одна строка? Se желаемые результаты-это:

 ID     type       value
a1    income       170
bb    spending     50
 

Как это сделать?

Ответ №1:

Вы могли бы попробовать добавить as_index=False в свой groupby.agg :

 >>> df1.groupby('ID',as_index=False).agg({'type':'first','value':'sum'})

   ID      type  value
0  a1    income    170
1  bb  spending     50
 

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

1. спасибо, и что же делает 'type':'first , делает? могу ли я пройти мимо двух значений?

2. 'first' возвращает первое значение каждой группы. Поэтому, если » тип «= = «другое» в строке 1, приведенный выше результат для a1 покажет «другое», так как это первое значение столбца типа, когда мы группируем по идентификатору (и ID = = «a1»). Тот же процесс повторяется для bb и других идентификаторов.

Ответ №2:

 your_table.groupby(['ID', 'type']).sum()
 

должно сработать

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

1. да, но все остальные столбцы исчезают, остаются только тип и значение. и почему его квадратные скобки? в нем говорится, что ошибка типа: объект «метод» не может быть подписан

2. Я отредактировал ответ, это была ошибка с моей стороны. Теперь он должен включать все 3 столбца