pandas obter média de um groupby
Estou tentando encontrar o custo médio mensal por user_id, mas só consigo obter o custo médio por usuário ou o custo mensal por usuário.
Como eu agrupo por usuário e mês, não há como obter a média do segundo grupo por mês, a menos que eu transforme a saída do grupo por outra coisa.
Este é o meu df:
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
Posso obter uma soma mensal, mas quero a média dos meses para cada user_id.
df.groupby(['id','mth'])['cost'].sum()
id mth
1 3 30
4 30
5 40
2 3 50
4 130
5 80
Eu quero algo como isto:
id average_monthly
1 (30+30+40)/3
2 (50+130+80)/3