#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