首页 > 解决方案 > 在列表中使用索引时遇到问题

问题描述

我试图从多个站点中获取赔率,但很明显,有些站点为不同的团队使用不同的名称。为了仍然能够有效地处理我的数据,我想更改我抓取的数据(在这种情况下是团队名称)。我有一个 Excel 文件,其中包含英超联赛每个站点的所有球队名称,并且有一列包含我的首选名称。现在我正在尝试更改我现在存储在“列表”中的刮取名称,具体取决于它们是否确实需要更改。如果需要更改它们,我想在我的 excel 文件的“MAIN”列中将它们更改为相应的名称。

但是当我尝试更改名称时,我找不到相应的正确名称,因为“Team_indice”是一个列表而不是整数。

import pandas as pd


List = ['Brentford', 'Arsenal', 'Manchester United', 'Leeds United', 'Everton', 'Southampton', 'Burnley', 'Brighton & Hove Albion', 'Leicester City', 'Wolverhampton Wanderers', 'Chelsea', 'Crystal Palace', 'Watford', 'Aston Villa', 'Norwich City', 'Liverpool', 'Newcastle United', 'West Ham', 'Tottenham', 'Manchester City']
TeamNames = pd.read_excel(r'C:\Users\Axelz\PycharmProjects\ArbitrageBetting\Teams.xlsx', engine='openpyxl')
TeamNamesUnibet = TeamNames['Unibet'].tolist()
TeamNamesMain = TeamNames['MAIN'].tolist()

print(TeamNamesUnibet)
for Team in List:
    Team_indice = TeamNames.index[TeamNames['Unibet'] == Team].tolist()
    print(Team)

    if Team in TeamNamesMain:
        print('ok')
    else:
        print('needs change')
        Team = TeamNamesMain[Team_indice]
        print(Team)

注意我尝试了以下方法:

删除.tolist()但随后返回的值变为排序 Int64Index,我也无法将其转换为整数。简单地尝试int(),但如果你能回答我的问题,你可能已经知道没有办法工作:(

标签: pythonpandas

解决方案


尝试像这样重构您的代码:

import pandas as pd

teams = [
    "Brentford",
    "Arsenal",
    "Manchester United",
    "Leeds United",
    "Everton",
    "Southampton",
    "Burnley",
    "Brighton & Hove Albion",
    "Leicester City",
    "Wolverhampton Wanderers",
    "Chelsea",
    "Crystal Palace",
    "Watford",
    "Aston Villa",
    "Norwich City",
    "Liverpool",
    "Newcastle United",
    "West Ham",
    "Tottenham",
    "Manchester City",
]
TeamNames = pd.read_excel(
    r"C:\Users\Axelz\PycharmProjects\ArbitrageBetting\Teams.xlsx", engine="openpyxl"
)
TeamNamesUnibet = TeamNames["Unibet"].tolist()
TeamNamesMain = TeamNames["MAIN"].tolist()

print(TeamNamesUnibet)

for team in teams:
    print(team)
    team_indice = TeamNames[TeamNames["Unibet"] == team].index[0]

    if team in TeamNamesMain:
        print("ok")
    else:
        print("needs change")
        new_team = TeamNamesMain[team_indice]
        print(new_team)

推荐阅读