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

如何计算含字符串'NA'的Pandas DataFrame列均值并忽略该值

解决Pandas中含字符串'NA'列的均值计算问题

问题原因

你的A、B列因为混杂了字符串类型的'NA',导致列的 dtype 是object,使用numeric_only=True时会被判定为非数值列,所以无法计算它们的均值。需要先把这些字符串'NA'转换为Pandas可识别的缺失值NaN,再将列转为数值类型,才能正常计算均值。

具体解决方案

步骤1:转换字符串'NA'为NaN并转为数值类型

使用pd.to_numeric()函数,通过errors='coerce'参数将无法转换为数值的内容(比如'NA')强制转为NaN,同时把列转为数值 dtype。

步骤2:计算均值

Pandas的mean()方法会自动忽略NaN值,直接计算有效数值的均值。

完整代码示例

import pandas as pd

# 原始DataFrame
fruit = pd.DataFrame({
    'id': (1,2,3,4,5,6),
    'Name': ('apple','apple','melon','melon','orange','orange'), 
    'A': (1,2,'NA',20,5,5), 
    'B': (1,5,4,2,'NA',1), 
    'C': (1,5,4,2,3,1)
})

# 批量处理A、B列,转换'NA'为NaN并转为数值类型
fruit[['A', 'B']] = fruit[['A', 'B']].apply(pd.to_numeric, errors='coerce')

# 计算A、B列的均值
a_mean = fruit['A'].mean()
b_mean = fruit['B'].mean()

print(f"A列均值:{a_mean:.1f}")  # 输出6.6
print(f"B列均值:{b_mean:.1f}")  # 输出2.6

验证结果

  • A列有效数值:[1,2,20,5,5],均值为(1+2+20+5+5)/5 = 6.6
  • B列有效数值:[1,5,4,2,1],均值为(1+5+4+2+1)/5 = 2.6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:06