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

如何在DataFrame中对指定多列(a、b、c)进行同步随机洗牌?

如何对DataFrame指定列同步随机洗牌?

首先,我理解你的需求:要让DataFrame中的a、b、c三列同步打乱行顺序(也就是这三列里每行的对应关系保持不变,只是整体随机重排),而d、e、f列保持原来的行数据不动。

下面是具体的实现步骤,用Pandas就能轻松搞定:

步骤1:准备示例DataFrame(如果你的数据已经存在,这步可以跳过)

先模拟你给出的数据结构,方便演示:

import pandas as pd

# 构造你的DataFrame
data = {
    'a': ['hello.text', 'hello2.text', 'hello3.text', 'hello4.text'],
    'b': [1, 2, 5, 8],
    'c': [2, 10, 8, 15],
    'd': [],  # 这里留空或者填你实际的d列数据
    'e': [],
    'f': []
}
df = pd.DataFrame(data)

步骤2:同步打乱a、b、c列

核心思路是先把这三列单独提取出来,打乱它们的行顺序,再替换回原DataFrame:

# 提取需要洗牌的列到临时DataFrame
temp_cols = df[['a', 'b', 'c']]

# 随机打乱临时DataFrame的行顺序(frac=1表示取全部行,random_state可选,用于固定随机结果方便复现)
shuffled_temp = temp_cols.sample(frac=1, random_state=42).reset_index(drop=True)

# 将打乱后的列替换回原DataFrame
df[['a', 'b', 'c']] = shuffled_temp

执行完上面的代码后,你就会得到类似你给出的示例效果:a、b、c列的行随机重排,但每行的三个值依然对应,而d、e、f列保持原样。

补充说明

  • 如果不需要固定随机结果,可以去掉random_state参数,每次运行都会得到不同的洗牌结果。
  • 如果你想让整个DataFrame的行(包括d、e、f)都跟着a、b、c同步打乱,那更简单,直接用df = df.sample(frac=1)即可,但这和你描述的需求不太匹配,所以优先推荐上面的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:10:24