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

如何计算DataFrame中各列的算术均值并返回结果res?

解决DataFrame列算术均值计算问题

你的代码存在几个核心问题:

  • 未将字典转换为pandas.DataFrame对象,导致无法调用df.columns等DataFrame方法
  • 缺少计算单列均值的col_ave函数实现
  • 未区分数值型列与非数值型列,直接计算会报错

以下是修正后的完整代码:

import pandas as pd

def col_ave(df, col_name):
    # 仅对数值型列计算均值,非数值列返回None
    if pd.api.types.is_numeric_dtype(df[col_name]):
        # 自动忽略NaN/None值,计算有效数据的算术均值
        return df[col_name].mean()
    return None

def ave():
    # 将字典转换为pandas DataFrame
    df = pd.DataFrame({
        'Courses':["Spark","PySpark","Python","pandas",None],
        'Fee' :[20000,25000,22000,None,30000],
        'Duration':['30days','40days','35days','None','50days'],
        'Discount':[1000,2300,1200,2000,None]
    })

    res = []
    for col in df.columns:
        res.append(col_ave(df, col))
    
    # 可选:返回列名与均值对应的字典,比纯列表更直观
    # res = dict(zip(df.columns, res))
    return res

# 调用函数查看结果
print(ave())

关键说明:

  • 必须导入pandas库,这是处理DataFrame的基础依赖
  • pd.api.types.is_numeric_dtype用于判断列类型,避免对字符串列执行均值计算报错
  • df[col_name].mean()会自动跳过列中的None(即pandas中的NaN)值,确保均值计算的准确性

运行结果:

[None, 24250.0, None, 1625.0]

内容的提问来源于stack exchange,提问作者Teresa Faint Smile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:45:41