关联用于计算的.csv列数据

2024-06-08 20:45:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python3和编码的绝对新手,所以请对我放松点。:)

作为一个项目,我正在根据2018年EPL成绩创建一个足球联赛表。我已经能够使用Pandas模块将包含整个季度数据的.csv文件分解为一轮又一轮的结果,再分解为.csv文件。现在,我需要根据每支球队的主客场目标,逐轮提取每支球队的积分。我很难将每一场比赛的进球与球队联系起来。我可以想出如何应用赢/平/输(3/1/0)分,但只能强制每个赛程,而不是动态地应用于一轮中的所有赛程。然后我需要将表写入另一个.csv文件

FTHG全职主场目标、FTAG全职客场目标、FTR全职结果

  • 示例数据

未命名:0,日期,主队,AwayTeam,FTHG,FTAG,FTR

2018年8月10日,曼联队,莱斯特,H.2.1

2018年8月1日,伯南茅斯,加的夫,2,0,H

2018年11月8日,富勒姆,水晶宫,0,2,A

2018年8月3日,切尔西哈德斯菲尔德,0,3,A

2018年8月4日,纽卡斯尔,托特纳姆,A.1.2

2018年8月5日,沃特福德,布莱顿,2,0,H

2018年8月6日,沃尔夫,埃弗顿,华盛顿州2,2

2018年8月7日,阿森纳,曼城,0,2,A

2018年8月8日,利物浦,西汉姆,4,0,H

2018年8月9日,南安普敦,伯恩利,0,0,D

  • 示例代码

    import pandas as pd
    
    results = pd.read_csv("2018 Round 1.csv")
    
    team = results.iloc[2,2]
    
    if results.iloc[2,4] > results.iloc[2,5]:
    
        points = 3
    
    elif results.iloc[2, 4] < results.iloc[2, 5]:
    
        points = 0
    
    else:
        results.iloc[2, 4] = results.iloc[2, 5]
    
        points = 1
    
    
    table_entry = (team + " " + str(points))
    
    print(table_entry)
    
    table_entry = pd.to_csv("EPL Table Round 1.csv", index = False)
    

    谢谢你的帮助


Tags: 文件csv数据目标tableresultspointspd
1条回答
网友
1楼 · 发布于 2024-06-08 20:45:11

我希望这有帮助:) 如果代码不清楚,请随意询问

import pandas as pd
import numpy as np

df = pd.read_csv('foot.txt')

#Make a list with all tema names
Home_teams = pd.unique(df['HomeTeam'])
Away_teams = pd.unique(df['AwayTeam'])
teams = np.concatenate((Home_teams, Away_teams))

df_teams =  pd.DataFrame(columns=['team', 'points'])

#For each team in the list...
for team in teams:
    print("*******" + team+ "*****")
    points = 0
    df_home = df[(df['HomeTeam'] == team)]
    res_home = df_home['FTR'].value_counts()
    try:
        points += res_home['H']*3;
    except:
        print("Didn't win when Home")
    try:
        points += res_home['D']*1;
    except:
        print("No Draws")

    df_away = df[(df['AwayTeam'] == team)]
    res_away = df_away['FTR'].value_counts()
    try:
        points += res_away['A']*3;
    except:
        print("Didn't win when Away")

    df_teams = df_teams.append({'team': team, 'points': points}, ignore_index=True)

    print(team +"has "+ str(points) +" points" )

相关问题 更多 >