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

计算DataFrame行均值时非NaN行仍返回NaN的问题排查

问题分析与解决方法

核心原因与对应解法

1. axis参数方向错误(最常见)

你写的axis=0是计算列的均值,而非行的均值。要计算每行的均值,必须指定axis=1。这是新手最容易踩的坑,修改参数后大概率能解决问题:

# 假设cols是排除时间戳后的数值列集合
df['行均值'] = df[cols].mean(axis=1, skipna=True)

2. 列选择逻辑有误

如果df[]未明确指定正确的列——比如不小心选中空列集合,或者误将时间戳列纳入计算范围——自然无法得到有效均值。

  • 先明确列范围:比如首列名为timestamp,可通过cols = df.columns[1:]或cols = df.columns.drop('timestamp')选中所有数值列。
  • 用df[cols].info()查看列的非空值统计,用df[cols].head()预览数据,确认选中的是正确的数值列。

3. 数据存在隐藏问题

虽然列类型显示为float64,但可能存在以下情况:

  • 部分列全为NaN:用df[cols].isna().sum()统计每列的NaN数量,过滤掉全NaN的列后再计算:
    # 筛选出至少有一个非空值的列
    valid_cols = df[cols].columns[df[cols].notna().any(axis=0)]
    df['行均值'] = df[valid_cols].mean(axis=1, skipna=True)
    
  • 存在字符串形式的"NaN":这种值虽显示为float64,但实际是无效值,可强制转换为标准NaN后再计算:
    df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:24:31