我有一个我工作的公司内所有客户交易的数据库。
ID | 付款 | 金额月 | 年||
---|---|---|---|---|
A | 向内 | 100 | 2 | 2005|
向外 | 200 | 2 | 2005 | |
B | 向内 | 100 | 7 | 2017
您可以在groupby
中使用列列表,如:
>>> 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
进一步:
>>> 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