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

如何针对不同型号按指定零件分组生成批次

按型号指定列分组处理DataFrame

原始数据定义

import pandas as pd

df1 = pd.DataFrame({'model':['A','A','A','A','A','B','B','B','B','B'],
                'p1':['p1_1','p1_1','p1_2','p1_2','p1_3','p1_4', 'p1_4','p1_5','p1_6','p1_7'],
                'p2':['p2_1','p2_1','p2_1','p2_2','p2_3', 'p2_4', 'p2_5', 'p2_6', 'p2_7','p2_7']})

df2 = pd.DataFrame({'model':['A','B'],
                    'part':['p1','p2']})

解决方案

核心思路是通过型号与分组列的映射,拆分数据后按规则分组处理,最后合并结果。

步骤1:创建分组列映射字典

先把df2的型号与对应分组列转成字典,方便后续调用:

part_map = df2.set_index('model')['part'].to_dict()
# 输出: {'A': 'p1', 'B': 'p2'}

步骤2:按型号拆分处理

遍历每个型号的子数据集,使用指定列分组,这里以保留每个分组的首条记录为例(可根据需求调整聚合逻辑):

result_dfs = []
for model, group in df1.groupby('model'):
    # 获取当前型号对应的分组列
    group_col = part_map[model]
    # 按指定列分组,保留每组第一条记录
    processed_group = group.groupby(group_col, as_index=False).first()
    result_dfs.append(processed_group)

# 合并所有处理后的结果
target_df = pd.concat(result_dfs, ignore_index=True)

步骤3:查看目标结果

执行后输出的target_df如下:

model    p1    p2
0     A  p1_1  p2_1
1     A  p1_2  p2_1
2     A  p1_3  p2_3
3     B  p1_4  p2_4
4     B  p1_4  p2_5
5     B  p1_5  p2_6
6     B  p1_6  p2_7

扩展:添加分组标识

如果需要给每行标记所属的分组序号,可修改处理逻辑:

result_dfs = []
for model, group in df1.groupby('model'):
    group_col = part_map[model]
    # 给每个分组分配唯一序号(从1开始)
    group['group_id'] = group.groupby(group_col).ngroup() + 1
    result_dfs.append(group)

target_df = pd.concat(result_dfs, ignore_index=True)

处理后每行都会带上group_id,标识其在对应型号下的分组归属。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:33:09