簡體   English   中英

"pandas 得到一個 groupby 的平均值"

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM