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

基于Series参考规则为Dataframe添加batch分组列的技术需求

动态分组添加批次列解决方案

现有DataFrame df1 存储模型与部件关联信息,Series s1 定义不同模型的分组规则:模型"A"需按model字段分组,模型"B"需按part字段分组。需要为df1新增batch列,根据规则标记每条数据的批次编号。

完整实现代码

import pandas as pd
import numpy as np

# 原始数据
df1 = pd.DataFrame({'model':['A','A','A','A','A','B','B','B','B','B'],
                'part':['part_1','part_1','part_2','part_2','part_3','part_4','part_4','part_5','part_5','part_5']})
s1 = pd.Series({'A':'model', 'B':'part'})

# 将规则Series转为字典,便于快速查找
rule_map = s1.to_dict()

# 初始化batch列
df1['batch'] = np.nan

# 遍历每个模型对应的分组规则,生成批次编号
for model_val, group_col in rule_map.items():
    # 筛选当前模型的所有行
    mask = df1['model'] == model_val
    # 对指定分组字段生成连续的批次编号(相同值对应相同编号)
    df1.loc[mask, 'batch'] = df1.loc[mask, group_col].rank(method='dense').astype(int)

# 查看结果
print(df1)

运行结果

model    part  batch
0     A  part_1      1
1     A  part_1      1
2     A  part_2      1
3     A  part_2      1
4     A  part_3      1
5     B  part_4      1
6     B  part_4      1
7     B  part_5      2
8     B  part_5      2
9     B  part_5      2

关键逻辑说明

  • rule_map = s1.to_dict():将规则Series转换为字典,实现模型到分组字段的快速映射,后续新增模型规则时只需修改s1即可。
  • rank(method='dense'):生成连续无间隔的批次编号,确保相同分组值对应相同编号,避免出现跳跃式编号。
  • 遍历规则字典:批量处理不同模型的分组逻辑,代码复用性和扩展性更强。

内容的提问来源于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.28 08:12:39