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

我需要计算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

如何使用Google Protobuf解析、编辑和生成object_detection/pipeline.config文件

我在一个常见的集成学习范式中训练多个模型,目前我在处理…

我的GridSearchCV不起作用,我不知道为什么

大家好,我在使用GridSearchCV时遇到了问题,…

Keras: 两个同时进行的层,其中一个对前一层的输出进行卷积

我想实现这样的模型连接: 输入图像1 -> 卷积层1 …

如何将行数据转换为列数据而不使用独热编码

我有一个如下所示的数据集。 MonthDate Day…

使用 ML Kit 与 NNAPI

我正在尝试在运行 Android 9 的设备上使用新的…

Vowpal Wabbit 可能的哈希冲突

我在VW中生成了一个模型,并且在相同的数据上生成了两个…

发表回复

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