You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按行计算排除最值后的均值(向量化方案)

如何在Pandas中按行计算排除最值后的均值(向量化方案)

给定如下DataFrame:

col_acol_bcol_ccol_d
-10024100
-20048200

需要按行计算排除最小值和最大值后的均值,预期结果如下:

col_acol_bcol_ccol_dmean_exc_min_max
-100241003
-200482006

已知可以用df.mean(axis=1)计算行均值,但不知道如何排除最值。由于数据集规模较大,需要完全向量化的高效解决方案。

创建该DataFrame的代码:

import pandas as pd

data = {
    "col_a": [-100, -200],
    "col_b": [2, 4],
    "col_c": [4, 8],
    "col_d": [100, 200],
}
df = pd.DataFrame(data)

解决方案

直接通过向量化操作计算:每行总和减去该行的最小值和最大值,再除以(总列数-2)——因为我们排除了两个极值。这种方法全程利用Pandas的内置向量化函数,避免循环,效率极高,适合处理大规模数据集。

代码实现:

# 新增列存储排除最值后的均值
df['mean_exc_min_max'] = (df.sum(axis=1) - df.min(axis=1) - df.max(axis=1)) / (df.shape[1] - 2)

验证结果

执行后df的输出与预期完全一致:

  • 第一行:总和为-100+2+4+100=6,减去最小值-100和最大值100,剩余6,除以4-2=2,得到3
  • 第二行:总和为-200+4+8+200=12,减去最小值-200和最大值200,剩余12,除以2得到6

内容的提问来源于stack exchange,提问作者Jossy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 21:37:12