我是初学者。我翻遍了,读了一堆相关的问题,但不太明白。我知道问题出在我身上,我错过了一些东西,但我希望有人能友善地帮助我。我正在尝试将一个视频游戏(大学篮球模拟)中的数据转换为与另一个视频游戏(职业篮球模拟)格式一致的数据。在
我有一个有列的数据框: 姓名、位置、身高、体重、投篮、得分
值如下: 乔恩·史密斯,C,84,235,特例,19.4 格雷格·琼斯,第72187页,一般,12.0
我想为“InsideScoring”创建一个新的专栏。我想做的是给一个球员分配一个随机产生的数字在一定的范围内,根据他们的位置,身高,体重,投篮得分和得分。在
我尝试了很多尝试,比如:
df1['InsideScoring'] = 0
df1.loc[(df1.Pos == "C") &
(df1.Height > 82) &
(df1.Points > 19.0) &
(df1.Weight > 229), 'InsideScoring'] = np.random.randint(85,100)
当我这样做时,所有符合条件的玩家(在“InsideScoring”列中的行)都会被分配到85到100之间的相同值,而不是在85和100之间随机混合的数字。在
最后,我要做的是浏览玩家列表,根据这四个标准,分配不同范围的值。有什么好主意吗。在
Pandas: Create a new column with random values based on conditional
我的建议是在这里使用
np.select
。你设置好你的条件,你的输出,你就可以走了。但是,为了避免迭代,但是也为了避免为满足条件的每个列分配相同的随机值,请创建与数据帧长度相等的随机值,并从中进行选择:设置
现在设置您的范围和条件(根据您的需要创建任意多个):
^{pr2}$现在要验证这不会多次指定值:
我们可以看到随机值被分配,即使它们都符合两个条件中的一个。虽然这比迭代和随机选取一个随机值的内存效率要低,因为我们要创建大量未使用的数字,但由于这些都是矢量化操作,因此速度仍然会更快。在
相关问题 更多 >
编程相关推荐