Pandas DataFrame按行分组求均值:代码未获预期输出求助
按分组求均值的正确实现方法
你当前的代码data=df.groupby('Term')['Subject'].apply(tuple)是把每个分组内的Subject列值打包成元组,和求均值的需求完全不匹配,这就是得不到预期结果的核心原因。以下是针对不同场景的正确实现方式:
场景1:对单一数值列求均值
如果Subject是数值类型,直接通过groupby后调用mean()方法即可:
data = df.groupby('Term')['Subject'].mean()
场景2:对分组内所有数值列求均值
如果需要计算每个分组下所有数值列的均值,无需指定单列:
data = df.groupby('Term').mean()
场景3:处理非数值列或自定义均值逻辑
如果Subject是非数值类型(比如字符串格式的数字),需要先转换类型再计算均值:
import pandas as pd data = df.groupby('Term')['Subject'].apply(lambda x: pd.to_numeric(x, errors='coerce').mean())
排查数据类型问题
如果执行后仍无正确结果,先检查Subject列的数据类型是否为数值:
print(df['Subject'].dtype) # 若为object类型,先转换为数值 df['Subject'] = pd.to_numeric(df['Subject'], errors='coerce')
内容的提问来源于stack exchange,提问作者Shabin K
相关产品推荐
相关产品推荐

