簡體   English   中英

Python Pandas 平均和總和沖突

[英]Python Pandas Average and Sum conflicts

我有一個看起來像這樣的表:

桌子

平均行數和總行數計算如下:

df1.loc["Average"] = df1.mean()
df1.loc["Total"] = df1.sum()

現在,我意識到這里的問題是平均值計算正確,但總和也包括平均值行,這不是我想要的。

理想情況下,我希望看到更類似於 single.loc 行的sum()應用於

`columns` ['Enageable R', 'R Responses', 'R Response Rate', 'Engageable Q',
                                'Q Responses', 'Q Response Rate']

mean()應用於columns ['R Response Rate', 'Q Response Rate']

所以我很想看到這樣的東西:

可接合 R R 響應 反應速度
品牌1 34 34 100.00%
品牌2 34 34 100.00%
品牌3 34 34 100.00%
全部的 102 102 100.00%

使用DataFrame.agg分別處理 function ,然后通過DataFrame.append添加新行

df = df.append(df.agg(['sum','mean']).rename({'sum':'Total','mean':'Average'}))

如果只需要處理一些列:

cols = ['Enageable R', 'R Responses', 'R Response Rate', 'Engageable Q',
                    'Q Responses', 'Q Response Rate']

df = df.append(df[cols].agg(['sum','mean']).rename({'sum':'Total','mean':'Average'}))

使用副本:

df2 = df1.copy(deep=True)

df2["Average"] = df1.mean()
df2["Total"] = df1.sum()

編輯

你的帖子有點混亂。

df1["Total"] = df1.sum()
df1["Average"] = df1[['R Response Rate', 'Q Response Rate']].mean(axis=1)

這就是我發現的,感謝@Wilian 的推薦,盡管如果有更有效的方法可以做到這一點,請告訴我。

所以我有一個 df1,我使用以下方法創建了一個空白 df2:

df2 = pd.DataFrame(columns=['Enageable R', 'R Responses', 'R Response Rate', 'Engageable Q',
                        'Q Responses', 'Q Response Rate'])

然后我用 df2 填充:

df2.loc["Average"] = df1.mean()
df2.loc["Total"] = df1.sum()

然后我將 df2 附加到 df1

df1 = df1.append(df2)

其中創建了以下內容:

表修訂

因此,總和和平均列在其他行的計算中不包括彼此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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