如何根据条件将行复制特定次数?
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']]
我正在尝试为游戏模拟创建一个数据框,以根据一组参数计算每个玩家将获得多少分。
我有这个数据框:
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']]