Python Pandas 平均值和求和冲突

Python Pandas Average and Sum conflicts

我有一个 table 看起来像这样:

平均行数和总行数的计算方式如下:

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

现在,我意识到这里的问题是平均值计算正确,但总和也包括平均值行,这不是我想要的。

理想情况下,我希望看到更像单个 .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']

所以我很想看到这样的东西:

Brand Engageable R R Responses Response Rate
Brand1 34 34 100.00%
Brand2 34 34 100.00%
Brand3 34 34 100.00%
Total 102 102 100.00%

使用副本:

df2 = df1.copy(deep=True)

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

编辑

你的post有点糊涂

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)

创建了以下内容:

所以在其他行的计算中,sum 和 average 列不相互包含。

使用DataFrame.agg for processing both function separately and then add new rows by 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'}))