我有以下df
,
id year_month amount
10 201901 10
10 201901 20
10 201901 30
20 201902 40
20 201902 20
我要groupby
id
和year-month
,然后获取amount
的组大小和总和,
df.groupby(['id', 'year_month'], as_index=False)['amount'].sum()
df.groupby(['id', 'year_month'], as_index=False).size().reset_index(name='count')
我想知道如何在同一行中同时进行;
id year_month amount count
10 201901 60 3
20 201902 60 2
答案 0 :(得分:5)
使用agg
:
df.groupby(['id', 'year_month']).agg({'amount': ['count', 'sum']})
amount
count sum
id year_month
10 201901 3 60
20 201902 2 60
如果要删除多索引,请使用MultiIndex.droplevel
:
s = df.groupby(['id', 'year_month']).agg({'amount': ['count', 'sum']}).rename(columns ={'sum': 'amount'})
s.columns = s.columns.droplevel(level=0)
s.reset_index()
id year_month count amount
0 10 201901 3 60
1 20 201902 2 60