如何计算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
相关产品推荐
相关产品推荐

