Как мне реплицировать строки определенное c количество раз в соответствии с условием? - PullRequest
0 голосов
/ 19 июня 2020

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

У меня есть этот фрейм данных:

  PLAYER TYPE  Quantity in my base  STRENGTH  POWER  Number of Matches (min)  \
0           A                    2        15    200                        3   
1           B                    3        80     20                        0   

   Number of Matches (max)  
0                        5  
1                        2  

df

Каждая строка в этом df представляет один тип игрока. В столбце «Количество на моей базе» у меня указано количество раз, когда каждый тип игроков появляется на моей базе, а в столбце «Количество матчей» - минимальное и максимальное количество матчей, которые каждый тип игроков должен сыграть за один день.

Мне нужно скопировать строки для каждого типа игроков с их соответствующими «Сила» и «Сила» столько раз, сколько = «Количество в моей базе» умноженное на случайное число между минимальным и максимальным количество совпадений каждого из них. Я делаю это для того, чтобы в новом фрейме данных каждая строка представляла одно совпадение для каждого конкретного c игрока в моей базе.

Например. Если

    PLAYERTYPE Quantity_in_my_base Rand_Num_Matches Number_of_rows
0   A1  2   4   8
1   A2  3   3   9

Количество реплицируемых строк

Тогда я хочу создать второй df следующим образом:

PLAYERTYPE STRENGTH POWER
0   A   15  200
1   A   15  200
2   A   15  200
3   A   15  200
4   A   15  200
5   A   15  200
6   A   15  200
7   A   15  200
8   A   15  200
9   A   15  200
10  A   15  200
11  A   15  200
12  A   15  200
13  A   15  200
14  A   15  200
15  A   15  200
16  A   15  200

New df

Но я хочу сделать это для игроков A1, A2 и B1, B2, B3 и так далее, чтобы каждый из них реплицировался в соответствии со своим случайным числом.

Большое спасибо!

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете использовать .repeat();

repeat_df = df.loc[df.index.repeat(df['Number of Matches'])]
repeat_df[['PLAYERTYPE', 'STRENGTH', 'POWER']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...