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

如何对Pandas DataFrame分组后的列值进行统一随机化替换?

实现分组一致的列值随机化

你可以通过以下两种简洁的方式实现需求,不需要复杂操作:

方法一:生成唯一值映射字典

这是效率较高的方案,核心是先为每个唯一值分配随机数,再批量替换:

import pandas as pd
import numpy as np

RSEED = 42
np.random.seed(RSEED)

# 提取X列的所有唯一值
unique_x = df["X"].unique()
# 为每个唯一值生成对应的随机数,构建映射字典
rand_map = {val: np.random.randint(100, 500) for val in unique_x}
# 替换原列,生成随机化后的新列
df["new X (randomized)"] = df["X"].map(rand_map)

方法二:结合groupBy与transform

如果想用groupBy,可以借助transform方法,确保每个分组内的所有行共用同一个随机数:

np.random.seed(RSEED)
df["new X (randomized)"] = df.groupby("X")["X"].transform(
    lambda _: np.random.randint(100, 500)
)

这里transform会对每个分组仅执行一次随机数生成,再将结果广播到该分组的所有行,保证同组值一致。

关键说明

  • 两种方法都能满足「相同原数值对应相同随机数」的要求
  • 设置RSEED可固定随机结果,方便测试复现
  • 当唯一值数量远少于总行数时,方法一的执行效率更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:10:34