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

如何基于DataFrame另一列的唯一值生成随机数列

解决方法

你原来的代码问题在于,transform里传入的pd.Series([np.random.randint(1,5)])无法正确为每个组生成并广播唯一的随机数。以下两种方法可以实现需求:

方法一:创建映射字典(直观易懂)

先给每个唯一的Creator分配随机数,再映射回原DataFrame:

import numpy as np
import pandas as pd

# 生成唯一Creator到随机数的映射
rank_mapping = {creator: np.random.randint(1, 5) for creator in df['Creator'].unique()}
# 映射生成新列
df['Cust Rank'] = df['Creator'].map(rank_mapping)

方法二:使用groupby.transform(更简洁)

利用transform对每个组生成一次随机数,并自动广播到组内所有行:

df['Cust Rank'] = df.groupby('Creator')['Creator'].transform(lambda _: np.random.randint(1, 5))

效果验证

用示例DataFrame测试:

df = pd.DataFrame({'Creator': ['A', 'A', 'B', 'C', 'C']})
# 运行上述任意一种方法后,输出如下(随机数会变化,但同一Creator值相同):
CreatorCust Rank
A1
A1
B3
C2
C2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:19:57