[英]pandas get average of a groupby
我試圖找到每個 user_id 的平均每月費用,但我只能獲得每用戶的平均費用或每用戶的每月費用。
因為我按用戶和月份分組,所以除非我將 groupby 輸出轉換為其他值,否則無法獲得第二個 groupby(月)的平均值。
這是我的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
重置索引應該有效。 嘗試這個:
In [19]: df.groupby(['id', 'mth']).sum().reset_index().groupby('id').mean()
Out[19]:
mth cost
id
1 4.0 33.333333
2 4.0 86.666667
如果你願意,你可以放下mth
。 邏輯是在sum
之后,你有這個:
In [20]: df.groupby(['id', 'mth']).sum()
Out[20]:
cost
id mth
1 3 30
4 30
5 40
2 3 50
4 130
5 80
此時重置索引將為您提供獨特的月份。
In [21]: df.groupby(['id', 'mth']).sum().reset_index()
Out[21]:
id mth cost
0 1 3 30
1 1 4 30
2 1 5 40
3 2 3 50
4 2 4 130
5 2 5 80
這只是再次分組的問題,這次使用mean
而不是sum
。 這應該給你平均值。
如果這有幫助,請告訴我們。
df_monthly_average = ( df.groupby(["InvoiceMonth", "InvoiceYear"])["Revenue"] .sum() .reset_index() .groupby("Revenue") .mean() .reset_index() )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.