如何基于Pandas中相同列值计算数值列的均值?
按分组计算均值并去重的Pythonic实现(Pandas)
直接用Pandas的groupby()+mean()就能搞定,这是处理这类分组聚合最简洁的Pythonic方式:
import pandas as pd data = { "Name": ["John", "John", "Robert", "Robert", "Cindy", "Cindy", "Sarah", "Sarah"], "Score": [84, 45, 67, 87, 88, 100, 76, 91] } df = pd.DataFrame(data) # 按Name分组计算Score均值,重置索引恢复标准DataFrame结构 result_df = df.groupby('Name')['Score'].mean().reset_index() print(result_df)
运行后输出结果:
Name Score 0 Cindy 94.0 1 John 64.5 2 Robert 77.0 3 Sarah 83.5
关键步骤说明
groupby('Name'):将DataFrame按Name列的唯一值自动分组,把相同Name的行归为一组['Score'].mean():针对每组的Score列计算平均值,自动忽略非数值列reset_index():把分组后作为索引的Name转回普通列,得到结构规整的结果
如果需要同时计算多个聚合指标(比如均值+总和),可以用agg()方法扩展:
result_df = df.groupby('Name').agg( 分数均值=('Score', 'mean'), 分数总和=('Score', 'sum') ).reset_index()
这样输出会包含两个聚合列,更灵活适配复杂需求。
内容的提问来源于stack exchange,提问作者E_Sarousi
相关产品推荐
相关产品推荐

