我有一个数据框,其中的值分布在多个列中。我想计算特定列中所有项目的平均值。
我查找的所有解决方案最终都为我提供了每列的单独平均值或所选列的平均值。
例如我的数据框看起来像这样:
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/