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

pandas groupby分组后如何遍历所有唯一分组对执行pd.merge操作

该需求完全可以实现,以下是两种常用的实现方案:

方案1:基于分组列表直接生成配对

先把groupby迭代器转成列表避免重复计算,再用标准库工具生成不重复配对,适合分组数据量不大的场景:

import itertools
import pandas as pd

# 将所有分组预存为列表,每个元素结构为 (分组名MultiIndex元组, 分组DataFrame)
group_list = list(grouped_df)

# itertools.combinations会自动生成所有无重复的两两组合,刚好匹配你需要的配对逻辑
for (name1, group1), (name2, group2) in itertools.combinations(group_list, 2):
    # 此处自定义merge逻辑,可根据需求调整连接方式、连接列等参数
    merged_res = pd.merge(group1, group2, how="inner", on=["你需要的连接字段"])
    # 后续对合并结果的操作

方案2:基于MultiIndex动态取分组

如果分组数据量较大,不想一次性加载所有分组到内存,可以基于分组的MultiIndex动态读取分组:

import itertools

# 先拿到所有分组的MultiIndex索引集合
group_index_list = list(grouped_df.groups.keys())

for idx1, idx2 in itertools.combinations(group_index_list, 2):
    # 动态读取对应两个分组
    group1 = grouped_df.get_group(idx1)
    group2 = grouped_df.get_group(idx2)
    merged_res = pd.merge(group1, group2, how="inner", on=["你需要的连接字段"])
    # 后续对合并结果的操作

两种方案效果完全一致,你可以根据自己的实际数据规模选择对应实现。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:10