计算每行某列的平均值,排除用于计算平均值的当前行

我需要计算DataFrame中某一列的平均值,要求每行的平均值计算时排除该行的值。

我知道可以通过索引迭代每一行,每次迭代时删除对应的行,然后计算平均值。我想知道是否有更高效的方法来实现这一点。


回答:

因此,meansum/size,所以你可以从所有值的sum中减去该列的值,然后除以DataFrame的长度减1

df = pd.DataFrame({'a':[1,2,3,4]})#慢,仅适用于唯一值df['b'] = df['a'].apply(lambda x: df.loc[df.a != x, 'a'].mean())#更快df['b1'] = (df['a'].sum() - df['a']) / (len(df) - 1)print (df)   a         b        b10  1  3.000000  3.0000001  2  2.666667  2.6666672  3  2.333333  2.3333333  4  2.000000  2.000000

Related Posts

Flatten and back keras

我正在尝试使用自编码器获取简单向量中的值 这是我的代码…

如何按索引访问PyTorch模型参数

如果我的网络有10层,包括偏置项,如何仅通过索引访问第…

Python中多元逻辑回归显示错误

我试图使用逻辑回归进行预测,并使用Python和skl…

在MACOS上安装NLTK

我在我的2015款Mac Pro上尝试安装NLTK,操…

如何在R中将通过RFE选择的变量插入到机器学习模型中?

我想使用递归特征消除方法来选择最重要的特征,然后将这些…

CountVectorizer 错误:ValueError: setting an array element with a sequence

我有一个包含144条学生反馈的数据集,其中有72条正面…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注