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

Pandas中DataFrame.mean()仅返回第一列均值,求助原因排查

问题:为什么DataFrame.mean(axis=0)只返回第一列的均值?

嘿,我之前也碰到过一模一样的问题!咱们先理清楚你的情况:

你写的代码是这样的:

df = pd.read_csv("aps.csv") 
df.replace('na', np.NaN, inplace=True) 
print(df.mean(axis=0))

但运行后只得到第一列的均值输出:

aa_000 59336.499567 
dtype: float64

核心原因

Pandas的mean()方法只会对数值类型的列(int、float等)计算均值,如果其他列是object(字符串)类型,就会被自动跳过。出现这个情况,大概率是:

  • 你的CSV文件里,除了第一列之外,其他列还包含非数值的内容(比如除了'na'之外的其他字符串、特殊符号)
  • 你用replace('na', np.NaN)没有把所有非数值的缺失值都处理掉,导致这些列仍然保持object类型,Pandas无法识别为可计算的数值列。

解决步骤

  1. 先检查列的数据类型,确认哪些列不是数值型:
print(df.dtypes)

运行后你会看到,没被计算均值的列类型都是object。

  1. 将所有列转换为数值类型,用pd.to_numeric()强制把无法转换的内容转为NaN(比单独替换'na'更全面):
# 对整个DataFrame的所有列进行转换
df = df.apply(pd.to_numeric, errors='coerce')

如果只想处理特定列,也可以单独指定:

df['target_column'] = pd.to_numeric(df['target_column'], errors='coerce')
  1. 再次计算均值,这时所有数值列的均值都会被返回:
print(df.mean(axis=0))

补充说明

pd.to_numeric的errors='coerce'参数会把所有无法转为数值的内容(比如'NA'、空字符串、特殊字符)都转为NaN,这样Pandas在计算均值时会自动忽略这些缺失值,确保所有原本应该是数值的列都能被正确计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:27:00