Python 平均函数,不包括数据帧中每行的值

Python 平均函数,不包括数据帧中每行的值,python,pandas,Python,Pandas,是否有一种简单的方法来计算数据帧中每列的平均值,并排除每行的特定值?下面每行中的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

是否有一种简单的方法来计算数据帧中每列的平均值,并排除每行的特定值?下面每行中的
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
产生一个新的数据帧

    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
,保持轴不变 对齐的。将负责一次性完成所有COL的这些操作

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

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

df_out = (df.sum(0) - df)/float(df.shape[0]-1)
样本运行-

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']

谢谢,效果很好!由于数据包含NaN值,“真”平均值需要使用df.count()而不是df_shape[0]来计算,否则我会将NaN值计算为实际值。不过,我在问题中没有具体说明,仅供参考。