如何根据条件将行复制特定次数?

How do I replicate rows a specific number of times according to a condition?

我正在尝试为游戏模拟创建一个数据框,以根据一组参数计算每个玩家将获得多少分。

我有这个数据框:

  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 中的每一行代表一种类型的玩家。在 "Quantity in my base" 列中,我有每种类型的玩家出现在我的基地中的次数,在 "Number of Matches" 列中,我有每种类型的玩家预计在一天内进行的最少和最多比赛次数。

我需要用他们各自的 "Strength" 和 "Power" 为每种类型的玩家复制行数次,即 = 到 "Quantity in my base" 乘以最小值之间的随机数以及每一个的最大匹配数。我这样做是为了在新数据框上,每一行代表我基地中每个特定球员的一场比赛。

比如。如果

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

Number of rows to be replicated

比我想创建第二个像这样的 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 等执行此操作,每个玩家都将根据各自的随机数进行复制。

非常感谢!

您可以使用 .repeat() ;

repeat_df = df.loc[df.index.repeat(df['Number of Matches'])]
repeat_df[['PLAYERTYPE', 'STRENGTH', 'POWER']]