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

如何基于Pandas DataFrame指定列条件按随机均等分布新增列

实现方案

首先修正你初始构造代码的变量名大小写错误(原代码中List_colors首字母大写和变量定义不一致),完整实现方案如下:

完整代码

import pandas as pd
import random

# 构造初始DataFrame
list_colors = [['black'], ["yellow"]]*4
df_colors = pd.DataFrame(list_colors, columns = ['color'])

# 定义color到color_2可选值的映射关系,可按需扩展
color_mapping = {
    "black": ["red", "green"],
    "yellow": ["purple", "pink"]
}

# 按color分组赋值
def generate_color2(group):
    options = color_mapping[group.name]
    # 计算重复次数保证各可选值数量均等
    repeat_cnt = len(group) // len(options)
    color2_values = options * repeat_cnt
    # 随机打乱保证每次运行结果不同
    random.shuffle(color2_values)
    return pd.Series(color2_values, index=group.index)

df_colors["color_2"] = df_colors.groupby("color", group_keys=False).apply(generate_color2)

# 查看输出结果
print(df_colors)

方案说明

  • 满足随机要求:每次运行random.shuffle都会重新打乱赋值顺序,输出结果不固定
  • 满足等数量分配要求:通过等倍重复可选值列表的方式,严格保证同color下每个color_2可选值的分配数量完全一致
  • 扩展性强:如果后续新增color取值、或者调整可选值列表,仅需要修改color_mapping即可,只要单color的行数是可选值数量的整数倍就可以正常运行

内容的提问来源于stack exchange,提问作者giorgio-p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:12