Pandas使用groupby分组后计算mean均值结果异常如何解决
问题原因
你得到的均值结果异常偏大,核心原因是rt列被识别为字符串(object类型)而非数值类型,分组计算时对字符串做了拼接操作而非数值求和,最终得到了不符合预期的超大值。
解决步骤
- 第一步:确认rt列的数据类型
运行以下代码查看列属性:
print(df['rt'].dtype)
如果输出结果为object,即可确认是数据类型问题。
- 第二步:转换rt列为数值类型并清理脏数据
使用pd.to_numeric做强制转换,无法转换的异常值会被自动设为NaN,后续求均值时会自动忽略:
import pandas as pd # 转换rt列类型 df['rt'] = pd.to_numeric(df['rt'], errors='coerce') # 可选:查看存在多少条异常的rt数据 print(f'异常rt数据条数:{df["rt"].isna().sum()}')
- 第三步:重新计算分组均值
运行你原有的分组统计代码即可得到正确结果:
rt_mean = df.groupby(['Person ID', 'emotional_w'])['rt'].mean()
结果验证
用你提供的示例数据完成转换后,计算得到的分组均值如下,和手动计算结果完全一致:
Person ID emotional_w 0 False 480.0 True 275.0 1 False 1091.0 True 3506.5 Name: rt, dtype: float64
内容的提问来源于stack exchange,提问作者dazai
相关产品推荐
相关产品推荐

