Панды: Объединение элементов данных по нескольким критериям

#python #pandas

Вопрос:

У меня есть база данных всех транзакций с клиентами в компании, в которой я работаю.

ID Платеж Сумма Месяц Год
A Внутрь 100 2 2005
A Внешний 200 2 2005
B Внутрь 100 7 2017

У меня есть трудности с объединением Суммы/количества этих транзакций на идентификатор клиента в месяц/год.

Единственный пункт, в котором мне удается объединить сумму/количество этих транзакций на идентификатор клиента.

 Combined = data.groupby("ID")["Amount"].sum().rename("Sum").reset_index()  

Не могли бы вы, пожалуйста, сообщить мне, каковы альтернативные решения?

Заранее благодарю вас!

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

1. Вы можете группировать по нескольким столбцам — df.groupby(['ID','Year','Month'])['Amount'].sum()

Ответ №1:

Вы можете использовать список столбцов в groupby следующих:

 gt;gt;gt; df.groupby(['ID', 'Year', 'Month', 'Payment'])['Amount'].agg(['sum', 'count'])   sum count ID Year Month Payment  A 2005 2 Inward 100 1  Outward 200 1 B 2017 7 Inward 100 1  

Для дальнейшего:

 gt;gt;gt; df.assign(Amount=np.where(df['Payment'].eq('Outward'),  -df['Amount'], df['Amount']))   .groupby(['ID', 'Year', 'Month'])['Amount'].agg(['sum', 'count'])   sum count ID Year Month  A 2005 2 -100 2 B 2017 7 100 1