Python 如何在计算的dataframe中创建新列,该列发生在除计算将进入的行之外的每一行

Python 如何在计算的dataframe中创建新列,该列发生在除计算将进入的行之外的每一行,python,pandas,drop,Python,Pandas,Drop,例如,假设我得到了系列A.1和A.2的数据帧df,如下所示: A.1A.2 2 8 3 2 5 1 我想计算所有其他行的平均值之差,如下所示: A.1A.2B 2 8 (3+5)/2 - (2+1)/2 3 2 (2+5)/2-(8+1)/2 5 1 (2+3)/2-(8+2)/2 我的代码看起来像这样,无法工作,我应该如何正确编写它 df['B']=平均值(df['A.1'].下降(df['B'].指

例如,假设我得到了系列A.1和A.2的数据帧df,如下所示:

A.1A.2
2      8
3      2
5      1
我想计算所有其他行的平均值之差,如下所示:

A.1A.2B
2      8      (3+5)/2 - (2+1)/2
3      2      (2+5)/2-(8+1)/2
5      1      (2+3)/2-(8+2)/2
我的代码看起来像这样,无法工作,我应该如何正确编写它

df['B']=平均值(df['A.1'].下降(df['B'].指数))-平均值(df['A.2'].下降(df['B'].指数)))
我必须完全避免循环,并以熊猫式的方式进行操作,因为我正在处理巨大的数据集。

尝试:

df.apply(lambda r : df.loc[df.index!=r.name,'A.1'].mean() - df.loc[df.index!=r.name,'A.2'].mean(), axis = 1)

结果集为:

0    2.5
1   -1.0
2   -2.5
dtype: float64
请注意,lambda函数中的
r.name
只是当前行的索引

完全没有lambda的另一种方法:

(df['A.1'].sum()-df['A.1'])/(len(df)-1) - (df['A.2'].sum()-df['A.2'])/(len(df)-1)

结果同上。

先生,您是熊猫的神和精灵!非常感谢。谢谢,刚刚提前添加了备选解决方案:-)