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

pandas DataFrame仅统计正元素计算多列行均值的实现方法

实现方案

场景1:所有行统一统计全部列的正元素平均值

直接使用pandas向量化操作实现,性能优异,适合大数据量场景:

import pandas as pd

# 构造示例数据
d = {'col1': [1, 2,-4,5], 'col2': [3, 4,5,6], 'col3': [4,5,-6,-8], 'col4': [1,2,3,4]}
df = pd.DataFrame(data=d)

# 核心逻辑:将非正元素替换为NaN后按行求均值,mean方法会自动跳过NaN
df['pos_mean'] = df.where(df > 0).mean(axis=1)

运行后输出结果符合需求:
第一行4个正元素平均值为(1+3+4+1)/4=2.25,第四行3个正元素(col1、col2、col4)平均值为(5+6+4)/3=5,和仅统计col2、col4的结果一致。

场景2:部分行需要自定义统计的列范围

如果需要按行强制指定统计列(比如第四行不管其他列是否为正,都仅统计col2、col4),可以用apply调用自定义函数实现:

def calc_pos_mean(row):
    # 索引为0的第一行,统计全部列的正元素
    if row.name == 0:
        valid_values = row[row > 0]
    # 索引为3的第四行,仅统计col2、col4的正元素
    elif row.name == 3:
        target_cols = row[['col2', 'col4']]
        valid_values = target_cols[target_cols > 0]
    # 其他行默认统计全部列正元素
    else:
        valid_values = row[row > 0]
    return valid_values.mean()

df['pos_mean'] = df.apply(calc_pos_mean, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:06:02