gpt4 book ai didi

python - iterrows() 需要几个小时才能运行,如何加快速度?

转载 作者:行者123 更新时间:2023-12-01 08:53:49 24 4
gpt4 key购买 nike

以下是示例数据 - Sample Data

当前解决方案 -

for idx, row in data.iterrows():

rp = row['right_player_test']
lp = row['left_player_test']
p = row['Player']

if rp in p:
data.loc[idx, 'side'] = 'right'

elif lp in p:
data.loc[idx, 'side'] = 'left'

else:
print('bad -', lp, rp, p)

right_player_test 是“Matchup_info”字段中的正确玩家
left_plater_test 是“Matchup_info”字段中左侧的玩家
“数据”DataFrame 中有更多统计数据,它们适用于“玩家”字段中的任何人

目标是确定“玩家”位于“Matchup_info”的左侧还是右侧,并将结果分配给“侧”列,以便我可以从“分数”字段获取正确的值。分数中“-”左边的数字属于左边的玩家,反之亦然。

例如,在第一个记录中,Tihomir Grozdanov 的总分为 12 (6+6),Vatutin 最终的总分为 5 ( 4+1)

问题是我正在对大约 250K+ 行(可能甚至更多)执行此操作,并且需要几个小时才能完成。有没有更快的方法来完成这个任务?

我想不出如何在这里使用apply(),因为我需要使用3列来计算side字段。我现在能想到的唯一其他解决方案是尝试使用多处理包,但我想在跳转之前看看是否有其他 pandas 替代方案。

谢谢!

最佳答案

您可以使用numpy select,以及zip

s1=np.array([x in y for x , y in zip(df['right_player_test'],df['Player'])])
s2=np.array([x in y for x , y in zip(df['left_player_test'],df['Player'])])
np.select([s1,s2,np.logical_and(~s1,~s2)],['right','left','bad'])

关于python - iterrows() 需要几个小时才能运行,如何加快速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com