Python 如何在计算的dataframe中创建新列,该列发生在除计算将进入的行之外的每一行
例如,假设我得到了系列A.1和A.2的数据帧df,如下所示: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.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)
结果同上。先生,您是熊猫的神和精灵!非常感谢。谢谢,刚刚提前添加了备选解决方案:-)