python - 计算 Pandas 几列中项目的平均值

标签 python python-3.x pandas numpy

我有一个数据框,其中的值分布在多个列中。我想计算特定列中所有项目的平均值。

我查找的所有解决方案最终都为我提供了每列的单独平均值或所选列的平均值。

例如我的数据框看起来像这样:

Name    a   b   c   d
Alice   1   2   3   4
Alice   2       4   2
Alice   3           2
Alice   1       5   2
Ben     3   3   1   3
Ben     4   1   2   3
Ben     1   2   2   

我想查看每个“爱丽丝”在 b 和 c 列中的值的平均值:

当我尝试时:

df[df["Name"]=="Alice"][["b","c"]].mean()

结果是:

b    2.00
c    4.00
dtype: float64

在另一篇文章中,我发现建议对每个轴尝试一次“双”均值,例如:

df[df["Name"]=="Alice"][["b","c"]].mean(axis=1).mean()

但是当时的结果是:

3.00

这是两列均值的平均值。

我期待一种计算方法: (2 + 3 + 4 + 5)/4 = 3.50

有没有办法在 Python 中做到这一点?

最佳答案

您可以使用 numpy 的 np.nanmean [numpy-doc]在这里,这将简单地将您的数据框部分视为一个数组,并默认计算整个部分的平均值:

>>> np.nanmean(df.loc[df['Name'] == 'Alice', ['b', 'c']])
3.5

或者如果你想按名称分组,你可以先堆叠数据框,比如:

>>> df[['Name','b','c']].set_index('Name').stack().reset_index().groupby('Name').agg('mean')
              0
Name           
Alice  3.500000
Ben    1.833333

关于python - 计算 Pandas 几列中项目的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57539136/

相关文章:

python - http ://127. 0.0.1:5000/Flask 服务器显示相同的内容,即使我使用更改源代码

python - 如何在条形图上显示自定义值

python - 属性错误 : 'numpy.ndarray' object has no attribute 'columns'

python - 与俄语/西里尔文新闻文章的永久链接

python - 将标准输出重定向到 tkinter 文本小部件

结合范围和数字列表的python

python - 在python 3中使用pygame移动屏幕的一部分

python - 按组将列转换为行

python - 迭代数据帧

python - 如何在 python 中检查我的图像是 RGB 格式还是 BGR 格式?我如何转换它们,反之亦然?