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

Python中如何按指定索引分组条件合并DataFrame的多行数据

按指定索引分组合并DataFrame行的实现方法

你可以通过给原DataFrame打分组标签后按组聚合的方式实现需求,具体步骤如下:

步骤1:定义分组规则与映射关系

首先把你给出的索引分组整理为嵌套列表,再生成每个原索引对应分组号的映射字典:

import pandas as pd

# 定义指定的索引分组
groups = [[0, 1], [2], [3, 4, 5], [6, 7], [8, 9]]
# 生成原索引到分组号的映射
group_mapping = {}
for group_id, idx_list in enumerate(groups):
    for idx in idx_list:
        group_mapping[idx] = group_id

步骤2:为原DataFrame添加分组标签

假设你的原始DataFrame名为df,用原索引匹配映射字典生成分组字段:

df['group'] = df.index.map(group_mapping)

步骤3:按分组聚合完成行合并

根据你对不同列的合并规则自定义聚合逻辑即可:

  • 如果是数值类列需要求和、求均值,直接传入对应聚合函数名
  • 如果是文本类列需要拼接,自定义lambda函数实现

示例代码(可根据实际需求调整聚合规则):

# 示例1:所有数值列统一按求和合并
new_df = df.groupby('group').sum(numeric_only=True).reset_index(drop=True)

# 示例2:不同列使用不同合并规则,比如name列按逗号拼接,value列求和
new_df = df.groupby('group').agg(
    name=('name', lambda x: ','.join(x)),
    value=('value', 'sum')
).reset_index(drop=True)

# 示例3:所有列取分组内第一个值
new_df = df.groupby('group').first().reset_index(drop=True)

输出的new_df就是按你要求的分组规则合并后的结果,行顺序和你给定的分组顺序完全一致。

内容的提问来源于stack exchange,提问作者PRABHAV GUPTA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:09:03