我想要找出每个用户的平均每月费用,但我现在只能得到每个用户的平均费用或每个用户的月度费用。
因为我按照用户和月份分组,所以无法获取第二个分组(月份)的平均值,除非我将分组输出转换为其他形式。
这是我的数据框:
df = { 'id' : pd.Series([1,1,1,1,2,2,2,2]),
'cost' : pd.Series([10,20,30,40,50,60,70,80]),
'mth': pd.Series([3,3,4,5,3,4,4,5])}
cost id mth
0 10 1 3
1 20 1 3
2 30 1 4
3 40 1 5
4 50 2 3
5 60 2 4
6 70 2 4
7 80 2 5
我可以获得每月的总和,但我想要每个用户ID每月的平均值。
df.groupby(['id','mth'])['cost'].sum()
id mth
1 3 30
4 30
5 40
2 3 50
4 130
5 80
我希望你能提供类似这样的内容:
id average_monthly
1 (30+30+40)/3
2 (50+130+80)/3
reset_index
。df.groupby(['id', 'mth']).sum().groupby(level=0).mean()
会产生相同的结果。 - Kartikdf = df.set_index('id'); df['avg'] = df.groupby(['id','mth']).sum().groupby(level=0).mean()
- sammywemmy