gpt4 book ai didi

python - Pandas 提高了合并数据帧的效率

转载 作者:行者123 更新时间:2023-11-28 17:04:40 25 4
gpt4 key购买 nike

这是我遇到的问题。

我想将团队代码(包含在 main df 中)与包含在 dfTeam 中的团队名称进行映射。

这是一个主要 df 的示例:

              Game Code  Play Number  Period Number  Clock  Offense Team Code
0 690002820050901 1 1 900.0 690
1 690002820050901 2 1 NaN 28
2 690002820050901 3 1 NaN 28
3 690002820050901 4 1 NaN 28
4 690002820050901 5 1 NaN 28
5 690002820050901 6 1 NaN 28
6 690002820050901 7 1 826.0 690
7 690002820050901 8 1 NaN 690
8 690002820050901 9 1 NaN 690

我想使用这个名为 dfTeam 的团队名称更改 Offense Team Code 等列。

     Team Code                      Name  Conference Code
0 5 Akron 875
1 8 Alabama 911
2 9 UAB 24312
3 28 Arizona State 905
4 29 Arizona 905

这是我目前所做的,合并数据框,更改列名并删除我不需要的列:

teamDict = {'Home Team Code':'homeTeamName','Visit Team Code':'visitTeamName','Offense Team Code':'offenseTeamName','Defense Team Code':'defenseTeamName'}
for oldName,newName in teamDict.items():
dfFULL = pd.merge(dfFULL,dfTeam,how='left',left_on=oldName,right_on='Team Code')
dfFULL.rename(columns={'Name':newName},inplace=True)
dfFULL.drop(['Conference Code','Team Code',oldName],axis=1,inplace=True)

此代码有效,但速度很慢。我的主数据框有 130k 左右的行。有更有效的方法吗?

最佳答案

基本上,您希望将 dfTeam 用作将 Team Codes 映射到 Names 的字典。对于每一列,您只需执行映射即可。

d = dfTeam.set_index('Team Code').Name
for oldName,newName in teamDict.items():
dfFULL[newName] = dfFULL[oldName].map(d)

# Then get rid of all old names
dfFull = dfFull.drop(columns=list(teamDict.keys()))

关于python - Pandas 提高了合并数据帧的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51774922/

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