如何在Python中对表格进行排序

时间:2018-09-28 12:21:16

标签: python pandas csv sorting

您好,我想根据每个球队的得分而不是球队名称来对德甲联赛表进行排序。有人能帮我吗?目前,我只能按团队名称对问题进行排序。我不知道在for循环后如何对点进行排序。

def push2(self):
    #Download Database
    urllib.request.urlretrieve(
        "http://www.football-data.co.uk/mmz4281/1819/d1.csv",
        "2018-19.csv")
    #Read Database
    df = pd.read_csv("2018-19.csv")
    teams = df["HomeTeam"]
    teams = teams.drop_duplicates()
    teams = teams.sort_values(0, False, False)
    teams = teams.tolist()
    namesLen = len(teams)
    for i in range(0, namesLen):


        # Get points through victories
        team = df[(df["HomeTeam"] == teams[i]) | (
                df["AwayTeam"] == teams[i])]
        teamWin = team[((team["FTR"] == "H") & (
                team["HomeTeam"] == teams[i])) | (
                               (team["FTR"] == "A") & (
                               team["AwayTeam"] == teams[
                           i]))]
        teamTotalPoints = (len(teamWin.index) * 3)

        # Get points through draw
        teamU = df[(df["HomeTeam"] == teams[i]) | (
                df["AwayTeam"] == teams[i])]
        teamD = teamU[(team["FTR"] == "D")]
        teamDTotal = (len(teamD.index) * 1)

        # Total points wins and points draws
        teamT = teamTotalPoints + teamDTotal

        teamTStr = str(teamT)


        print(str( teamTStr + ": " +teams[i] ))

1 个答案:

答案 0 :(得分:0)

我建议您仔细阅读Pandas文档,尤其是fscanf()(链接here)和groupby(链接here)功能。他们提供了很好的例子,为您提供了所需的答案。有关合并可以提供的更多示例,请查看this article,其中包含大量有关不同组合的示例。

话虽如此,下面是一种仅使用熊猫来产生总进球的方法,以使该联盟中的俱乐部从最高到最低依次排名。

我采取的一些假设:

  • 使用的Python版本是2.7
  • 所使用的Pandas版本至少为0.19。
  • 进行一些分组和排序后,最终结果是可以操作的新merge
  • 该文件已经加载到您的python脚本中。
  • 这些列基于http://www.football-data.co.uk/notes.txt
  • 假设dataframe列中没有错误。

只要您的数据框遵循与您列出的链接相同的结构,下面的功能就应该可以重复。

HomeTeam