如何在Pandas中按预定义索引分组,获取组首名称并计算组内求和
解决方案
以下是针对需求的具体实现步骤和代码:
- 初始化结果容器:用列表暂存每组的组名和求和结果,后续转为结构化DataFrame。
- 遍历预定义索引组:对每个索引组执行以下操作:
- 提取该组对应的DataFrame切片
- 从切片中取出第一行的
Name作为组名 - 计算该组
Number列的求和值 - 将组名和求和值以字典形式加入结果列表
- 转换为结果DataFrame:把结果列表转为最终的结构化输出。
代码示例
import pandas as pd # 模拟原始DataFrame(替换为你的实际数据) df = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace'], 'Number': [10, 20, 30, 40, 50, 60, 70] }) # 预定义索引组(替换为你的实际分组索引) index_groups = [[0, 1, 2], [3, 4], [5, 6]] result_list = [] for indices in index_groups: # 提取当前组的切片数据 group_data = df.loc[indices] # 获取组的第一个Name值 group_name = group_data['Name'].iloc[0] # 计算组内Number列的总和 total_number = group_data['Number'].sum() result_list.append({'组名': group_name, 'Number总和': total_number}) # 生成最终结果DataFrame final_result = pd.DataFrame(result_list) print(final_result)
示例输出
组名 Number总和 0 Alice 60 1 David 90 2 Frank 130
问题排查提示
如果之前无法匹配组的首名称,大概率是没有基于当前组的切片去取Name值,比如误操作成从整个DataFrame取iloc[0],而非从当前组的切片中取iloc[0]。确保每次取组名时,都是针对当前遍历到的索引组对应的切片操作即可。
内容的提问来源于stack exchange,提问作者breaker7
相关产品推荐
相关产品推荐

