Pandas:基于来自

2024-09-30 00:30:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是初学者。我翻遍了,读了一堆相关的问题,但不太明白。我知道问题出在我身上,我错过了一些东西,但我希望有人能友善地帮助我。我正在尝试将一个视频游戏(大学篮球模拟)中的数据转换为与另一个视频游戏(职业篮球模拟)格式一致的数据。在

我有一个有列的数据框: 姓名、位置、身高、体重、投篮、得分

值如下: 乔恩·史密斯,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

Numpy "where" with multiple conditions


Tags: 数据游戏视频格式with玩家数字random
1条回答
网友
1楼 · 发布于 2024-09-30 00:30:22

我的建议是在这里使用np.select。你设置好你的条件,你的输出,你就可以走了。但是,为了避免迭代,但是为了避免为满足条件的每个列分配相同的随机值,请创建与数据帧长度相等的随机值,并从中进行选择:


设置

df = pd.DataFrame({
    'Name': ['Chris', 'John'],
    'Height': [72, 84],
    'Pos': ['PG', 'C'],
    'Weight': [165, 235], 
    'Shot': ['Amazing', 'Fair'],
    'Points': [999, 25]
})

    Name  Height Pos  Weight     Shot  Points
0  Chris      72  PG     165  Amazing     999
1   John      84   C     235     Fair      25

现在设置您的范围和条件(根据您的需要创建任意多个):

^{pr2}$

    Name  Height Pos  Weight     Shot  Points  InsideScoring
0  Chris      72  PG     165  Amazing     999             72
1   John      84   C     235     Fair      25             89

现在要验证这不会多次指定值:

df = pd.concat([df]*5)

... # Setup the ranges and conditions again

df.assign(InsideScoring=np.select([cond1, cond2], [range1, range2]))

    Name  Height Pos  Weight     Shot  Points  InsideScoring
0  Chris      72  PG     165  Amazing     999             56
1   John      84   C     235     Fair      25             96
0  Chris      72  PG     165  Amazing     999             74
1   John      84   C     235     Fair      25             93
0  Chris      72  PG     165  Amazing     999             63
1   John      84   C     235     Fair      25             97
0  Chris      72  PG     165  Amazing     999             55
1   John      84   C     235     Fair      25             95
0  Chris      72  PG     165  Amazing     999             60
1   John      84   C     235     Fair      25             90

我们可以看到随机值被分配,即使它们都符合两个条件中的一个。虽然这比迭代和随机选取一个随机值的内存效率要低,因为我们要创建大量未使用的数字,但由于这些都是矢量化操作,因此速度仍然会更快。在

相关问题 更多 >

    热门问题