如何向pandas DataFrame中按零件所属集合数量新增行并填充关联零件号
实现方案
直接通过分组自连接+过滤自匹配行即可实现需求,代码简洁易读,适配绝大多数场景:
1. 测试数据构造
我们先构造符合描述的初始数据集作为验证:
import pandas as pd # 初始数据,set_id为所属集合编号,part_id为零件编号 df = pd.DataFrame({ "set_id": ["A", "A", "A", "B", "B"], "part_id": ["P1", "P2", "P3", "Q1", "Q2"] })
2. 核心处理逻辑
# 按所属集合做自连接,生成所有同集合零件的两两组合 res = df.merge(df, on="set_id", suffixes=("_source", "_target")) # 过滤掉零件和自身配对的无效行 res = res[res["part_id_source"] != res["part_id_target"]].reset_index(drop=True)
3. 效果验证
上述代码处理后输出的结果完全符合需求:
- 集合A共有3个零件,每个零件生成2条配对行,合计6行
- 集合B共有2个零件,每个零件生成1条配对行,合计2行
- 每行都包含源零件编号,以及同集合下的另一个配对零件编号
如果需要调整配对列的名称,直接修改merge方法的suffixes参数即可。
内容的提问来源于stack exchange,提问作者user3308817
相关产品推荐
相关产品推荐

