我有一个应该训练的熊猫数据框,但在必须重新组织数据之前。
我应该如下所示对随机列值进行洗牌(玩家1和2的匹配值)
起点
|-----------|-----------|---------------|--------------|---------------|--------------|
| Winner | Loser | Winner Weight | Loser Weight | Winner Height | Loser Height |
|-----------|-----------|---------------|--------------|---------------|--------------|
| Tom | Jack | 88 | 77 | 178 | 189 |
| Ash | Zuck | 90 | 69 | 190 | 177 |
| Ben | Mark | 86 | 88 | 198 | 179 |
|-----------|-----------|---------------|--------------|---------------|--------------|
终点
|-----------|-----------|---------------|--------------|--------------|-------------|---------|
| Player 1 | Player 2 | P1 Weight | P2 Weight | P1 Height | P2 Height | Winner |
|-----------|-----------|---------------|--------------|--------------|-------------|---------|
| Jack | Tom | 77 | 88 | 189 | 177 | 1 |
| Ash | Zuck | 90 | 69 | 190 | 177 | 0 |
| Mark | Ben | 88 | 86 | 179 | 198 | 1 |
|-----------|-----------|---------------|--------------|--------------|-------------|---------|
答案 0 :(得分:0)
一种方法是转换为记录,对每个记录应用逻辑,然后转换回df:
def convert_d(d):
new_d = {}
p1 = random.choice(['Winner', 'Loser'])
p2 = [x for x in ['Winner', 'Loser'] if x!=p1][0]
new_d['Player 1'] = d[p1]
new_d['Player 2'] = d[p2]
new_d['P1 Weight'] = d[f'{p1} Weight']
new_d['P2 Weight'] = d[f'{p2} Weight']
new_d['P1 Height'] = d[f'{p1} Height']
new_d['P2 Height'] = d[f'{p2} Height']
if p1=='Winner':
new_d['Winner'] = 0
else:
new_d['Winner'] = 1
return new_d
pd.DataFrame.from_records([convert_d(d) for d in df.to_dict(orient='records')])
Player 1 Player 2 P1 Weight P2 Weight P1 Height P2 Height Winner
0 Tom Jack 88 77 178 189 0
1 Ash Zuck 90 69 190 177 0
2 Ben Mark 86 88 198 179 0