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

DataFrame中按条件为每行生成同组一致随机数的实现咨询

实现方案(Python Pandas)

以下代码可以直接满足需求,运行后输出和你给出的示例一致:

import pandas as pd
import numpy as np

# 构造示例DataFrame,你可以替换成自己的数据源
data = {
    'id': [1111, 1111, 2222, 3333, 4444],
    'names': ['name1', 'name2', 'name1', 'name2', 'name2'],
    'code': ['jflsdf3r8fhldfskdjbf29', 'sljncidbviwbedsdvjfb', 'jflsdf3r8fhldfskdjbf29', 'sadovnadnfadfadgdaf', 'sadovnadnfadfadgdaf']
}
df = pd.DataFrame(data)

# 给每个唯一code分配初始随机数,固定seed是为了复现结果,不需要可以删除
np.random.seed(42)
code_unique = df['code'].unique()
code_rand_map = dict(zip(code_unique, np.random.randint(1, 100, size=len(code_unique))))

# 统一同一id下所有关联code的随机数
id_rand_map = df.groupby('id')['code'].first().map(code_rand_map).to_dict()
for id_val, group_df in df.groupby('id'):
    for code_val in group_df['code'].unique():
        code_rand_map[code_val] = id_rand_map[id_val]

# 映射生成新列
df['random_number'] = df['code'].map(code_rand_map)

# 可选:将随机数转换为1、2、3这类连续编号,和示例输出格式完全匹配
df['random_number'] = pd.factorize(df['random_number'])[0] + 1

逻辑说明

  • 首先给每一个唯一的code生成独立的初始随机数
  • 再以id为基准,把同一个id对应的所有code的随机数统一为同一个值,保证同一id、同一code的随机数都一致
  • 最后把映射关系回写到原DataFrame生成新列
  • 如果不需要连续的编号,删除最后一行可选代码即可

内容的提问来源于stack exchange,提问作者Y.C.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:09:04