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

pandas中基于另一列类别对单列子集执行组内置换的实现方法

分组内列值随机置换的pandas实现

你可以直接用pandas内置的groupby+transform组合实现需求,完全不需要显式循环,对上千个分组的场景性能足够:

核心实现代码

import pandas as pd

# 示例DataFrame构造
df = pd.DataFrame({
    'col1': [1, 1, 1, 2, 2, 2, 3, 3, 3], 
    'col2': ['a', 'b', 'c', 'A', 'C', 'B', 'red', 'blue', 'green']
})

# 仅在col1同组范围内打乱col2
df['col2'] = df.groupby('col1')['col2'].transform(lambda x: x.sample(frac=1).values)

说明

  • sample(frac=1)代表对当前组的样本100%随机抽取,等价于打乱顺序
  • 末尾加.values是为了返回numpy数组,规避pandas索引对齐导致打乱失效的问题
  • 如果需要固定随机结果方便复现,可以给sample加random_state参数,例如x.sample(frac=1, random_state=42).values

方案优势

  • 没有显式循环,代码简洁易读
  • 基于pandas原生优化的分组逻辑,即使col1有数千个不同分组,执行效率也远高于手写循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:15:11