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

Python中Pandas DataFrame随机交换玩家列数据及生成target字段问题

解决方案

核心思路

先随机生成布尔掩码标记需要交换的行,再针对这些行交换player1/player2相关列,最后根据掩码设置target字段。

具体实现代码

1. 导入依赖

import pandas as pd
import numpy as np

2. 生成随机交换掩码

设置需要交换的行比例(示例为30%),生成对应掩码:

# swap_mask为True的行将被交换,可调整p参数改变交换比例
swap_mask = np.random.choice([True, False], size=len(df), p=[0.3, 0.7])

3. 交换player1/player2相关数据

  • 如果仅需交换player1和player2两列:
# 对掩码标记的行,交换player1和player2的值
df.loc[swap_mask, ['player1', 'player2']] = df.loc[swap_mask, ['player2', 'player1']].values
  • 如果存在多组对应列(如player1_score、player2_score等):
# 自动匹配所有player1/player2开头的列
player1_cols = [col for col in df.columns if col.startswith('player1')]
player2_cols = [col for col in df.columns if col.startswith('player2')]

# 批量交换对应列的数据
df.loc[swap_mask, player1_cols + player2_cols] = df.loc[swap_mask, player2_cols + player1_cols].values

4. 添加target字段

# 未交换的行:player1是获胜者,target=1;交换的行:player1是失败者,target=0
df['target'] = np.where(swap_mask, 0, 1)

关键说明

  • 调整np.random.choice的p参数可以灵活控制交换行的比例(比如p=[0.5,0.5]就是50%的行交换)
  • 掩码是逐行随机生成的,每次运行都会得到不同的交换结果,完全满足“随机部分交换”的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:42:14