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

使用pandas按行计算多列均值时排除特定值与非计算列的方法

修改后可直接运行的代码

import pandas as pd

# 读取H1~H24列,读入时直接将-9999识别为缺失值,去掉原代码错误的skiprows参数避免跳过头
df = pd.read_csv(file, sep='\t', usecols=[*range(1,25)], na_values=-9999)
# 将0值也替换为缺失值,不参与均值计算
df = df.replace(0, pd.NA)
# 按行计算均值,自动跳过所有缺失值
df_mean = df.mean(axis=1)
# 索引对齐id编号(从1开始)
df_mean.index = df_mean.index + 1
# 输出结果到文件
df_mean.to_csv(outfile, sep='\t', header=False)

核心修改逻辑

  1. 读入数据时新增na_values=-9999参数,直接把无效值-9999识别为pandas内置的缺失值,不需要额外遍历处理
  2. 新增df.replace(0, pd.NA)语句,把另一类无效值0也替换为缺失值
  3. pandas的mean方法默认开启skipna=True,会自动跳过所有缺失值计算均值,最终得到的就是仅统计有效值的日均值

可选优化

如果某一行24个值全为无效值,计算结果会为NaN,你可以根据需求新增空值处理逻辑,比如要将空结果替换为-9999,可以在计算均值后加一行:

df_mean = df_mean.fillna(-9999)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:51:03