gpt4 book ai didi

python - 平均函数不包括 Pandas DataFrame 中每行的值

转载 作者:行者123 更新时间:2023-11-28 16:21:41 26 4
gpt4 key购买 nike

有没有一种简单的方法来计算 pandas DataFrame 中每一列的平均值,并为每一行排除特定值?下面每行中的 x 标记每次迭代中要从计算中排除的值:

    a    b                     a    b                    a    b
0 1 2 0 x x 0 1 2
1 2 4 first loop 1 2 4 second loop 1 x x etc.
2 3 6 ---> 2 3 6 ---> 2 3 6 --->
3 4 8 3 4 8 3 4 8
4 5 10 4 5 10 4 5 10
____________ _____________
col_avg: 3.5 7.0 col_avg: 3.25 6.5

Using only 4 values at each iteration, as the "x" is excluded from data set

产生一个新的DataFrame

    a_x    b_x
0 3.5 7.0
1 3.25 6.5
2 3.0 6.0
3 2.75 5.5
4 2.5 5.0

谢谢

/N

最佳答案

从第一步开始,假设我们对求和而不是计算平均值感兴趣。在那种情况下,我们将沿着每个列添加除当前元素之外的所有元素。查看它/解决它的其他方法是对每个列的所有元素求和并减去当前元素本身。所以,基本上我们可以用 df.sum(0) 得到所有列的总和,然后简单地从中减去 df,保持轴对齐。 Broadcasting将负责一次跨所有列执行这些操作。

为了获得平均的第二步,我们简单地除以每个列求和所涉及的元素数量,即 df.shape[0]-1

因此,我们会有一个矢量化的解决方案,就像这样 -

df_out = (df.sum(0) - df)/float(df.shape[0]-1)

sample 运行-

In [128]: df
Out[128]:
a b
0 1 2
1 2 4
2 3 6
3 4 8
4 5 10

In [129]: (df.sum(0) - df)/float(df.shape[0]-1)
Out[129]:
a b
0 3.50 7.0
1 3.25 6.5
2 3.00 6.0
3 2.75 5.5
4 2.50 5.0

要将列名设置为所需的名称,请执行:df_out.columns = ['a_x','b_x']

关于python - 平均函数不包括 Pandas DataFrame 中每行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39819391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com