You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按预定义索引分组,获取组首名称并计算组内求和

解决方案

以下是针对需求的具体实现步骤和代码:

  1. 初始化结果容器:用列表暂存每组的组名和求和结果,后续转为结构化DataFrame。
  2. 遍历预定义索引组:对每个索引组执行以下操作:
    • 提取该组对应的DataFrame切片
    • 从切片中取出第一行的Name作为组名
    • 计算该组Number列的求和值
    • 将组名和求和值以字典形式加入结果列表
  3. 转换为结果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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:50:27