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

如何基于包含人员姓名职位的CSV文件生成各职位1人的随机分组

最高效实现方案(Python + Pandas,单脚本即可完成,全流程耗时不超过10秒)

整体逻辑是先按职位拆分数据集、分别随机打乱,再按索引对齐分配分组编号,最后合并输出,时间复杂度为O(n),适合任意规模的人员数据处理。

操作步骤

  • 第一步:读取原始CSV,按四类职位拆分出4个独立的人员列表,各自执行随机排序
  • 第二步:取4个职位列表的最小长度作为可生成的最大组数(总人数55不是4的整数倍,必然存在剩余人员,剩余人员分组可标注为未分组)
  • 第三步:给每个职位列表的前N个成员(N为最大组数)分配从1到N的分组编号,剩余成员统一标注分组为未分组
  • 第四步:合并所有人员数据,输出带分组列的新CSV即可

可直接运行的代码

import pandas as pd
import random

# 1. 读取原始数据
df = pd.read_csv("你的原始文件路径.csv")

# 2. 按职位拆分并随机打乱
pos_list = ["Producer", "Director", "Volunteer", "Tech"]
pos_dfs = {}
for pos in pos_list:
    pos_df = df[df["职位"] == pos].copy().sample(frac=1).reset_index(drop=True)
    pos_dfs[pos] = pos_df

# 3. 计算最大可分组数
max_group = min(len(v) for v in pos_dfs.values())

# 4. 分配分组编号
result_list = []
for pos, pos_df in pos_dfs.items():
    # 前max_group个分配分组
    pos_df.loc[:max_group-1, "分组"] = pos_df.loc[:max_group-1].index + 1
    # 剩余的标注未分组
    pos_df.loc[max_group:, "分组"] = "未分组"
    result_list.append(pos_df)

# 5. 合并并输出
final_df = pd.concat(result_list).reset_index(drop=True)
final_df.to_csv("分组结果.csv", index=False, encoding="utf-8-sig")

可选调整规则

如果需要把剩余人员也分配到现有组中,可以在上述代码基础上,给剩余人员随机匹配1到max_group的分组编号即可,不会破坏原有组的四类职位各1人的基础规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:24:04