Перемешивание разных значений в pandas - PullRequest
0 голосов
/ 06 августа 2020

У меня есть pandas фрейм данных, который я должен обучить, но до того, как мне придется реорганизовать данные.

Я должен перемешать значения столбцов RANDOM, как показано ниже (Соответствующие значения игрока 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    |
|-----------|-----------|---------------|--------------|--------------|-------------|---------|

1 Ответ

0 голосов
/ 06 августа 2020

Один из подходов - преобразовать в записи, применить logi c к каждому и преобразовать обратно в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...