如何用Pandas合并DataFrame中同姓名班级的重复记录并汇总分数?
解决方法
核心思路是按Class和Name分组,对Score列求和,同时先处理原始数据里班级格式不一致的问题(比如3BI.这类带多余后缀的情况),确保分组准确。
步骤1:读取CSV数据
先确保你已经导入pandas并读取了目标CSV文件:
import pandas as pd # 替换成你的CSV文件路径 df = pd.read_csv('your_data.csv')
步骤2:清理班级列格式
原始数据中Liam的班级存在3BI和3BI.两种写法,需要统一格式:
# 去除Class列末尾的点号 df['Class'] = df['Class'].str.rstrip('.')
步骤3:分组求和生成目标DataFrame
按Class和Name作为分组依据,对Score列求和,最后重置索引得到结构规整的结果:
result_df = df.groupby(['Class', 'Name'], as_index=False)['Score'].sum()
最终结果示例
运行上述代码后,result_df会输出你期望的结果:
Class Name Score 0 3BI Liam 36 1 3CI Lucas 34 2 3CI Noah 21 3 3FI Oliver 17
完整代码
import pandas as pd # 读取数据 df = pd.read_csv('your_data.csv') # 统一班级格式 df['Class'] = df['Class'].str.rstrip('.') # 分组计算总分 result_df = df.groupby(['Class', 'Name'], as_index=False)['Score'].sum() # 打印结果 print(result_df)
内容的提问来源于stack exchange,提问作者Matteo Gandini
相关产品推荐
相关产品推荐

