gpt4 book ai didi

python - Dataframe 嵌套循环 - set_value 变量输入

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:24 25 4
gpt4 key购买 nike

希望有人能为我指明正确的方向,因为我是 Python 的新手。

我正在做一个小项目,以使用一些足球数据掌握 Python 中的数据分析。我有两个数据帧,一个包含玩家信息,另一个包含比赛信息 (match_df)。 match_df 有 22 列,其中包含比赛中每个球员的球员 ID。我想将 match_df 中的 player_ID 数据换成玩家的技能等级。我编写了一个函数来查找玩家和日期并返回评分 (find_player_skill)。我想将其应用于数据框中的每个相关列,但无法弄清楚如何使用 apply 函数,因为参数取决于数据框行。因此,我认为最简单的方法是在数据框的每个元素上使用 set_value,如下所示。

问题是我还没有设法让它执行(尽管我没有尝试连续运行几个小时)。我假设有一种方法可以在合理的时间内用不同的代码或增强的版本做同样的事情。我已经尝试在一个小样本(3 行)上快速运行代码,然后在 30 分钟左右的时间内没有完成 1000 行。

#change player ID's to skill data, currently runs very slowly
for i in range(len(match_df['match_date'])):
match_date = match_df['match_date'].iloc[i]
match_index = match_df.iloc[i].name
for pl_lab in ['h1','h2','h3','h4','h5','h6','h7','h8','h9','h10', 'h11',\
'a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11']:
player_ID = match_df[pl_lab].iloc[i]
player_skill = find_player_skill(player_ID, match_date)
match_df.set_value(match_index,pl_lab,player_skill)

非常感谢任何建议。

编辑:同样值得一提的是,我考虑过调试代码并为此下载了 Pycharm,但我编写的一些早期代码似乎运行得非常慢(我最初在 iPython 中编写了所有代码)

最佳答案

假设 df 是 match 的数据帧,其中 0 到 2 列是玩家 ID,这是您可以执行的操作:

df = pd.DataFrame([['c' , 'a', 'b'], ['b', 'c', 'a']])
df
Out[70]:
0 1 2
0 c a b
1 b c a

df_player = pd.DataFrame([['a', 100], ['b', 230], ['c', 200]],columns=['ID', 'skill']).set_index('ID')

skill
ID
a 100
b 230
c 200


dic = df_player.to_dict()['skill']

df.apply(lambda x: [dic[n] if n in dic.keys() else n for n in x], axis=1)
Out[69]:
0 1 2
0 200 100 230
1 230 200 100

关于python - Dataframe 嵌套循环 - set_value 变量输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39833405/

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