【发布时间】:2020-04-09 23:04:19
【问题描述】:
我正在尝试复制使用循环和 numpy 矢量化的结果,文章在此处找到 (https://towardsdatascience.com/how-to-make-your-pandas-loop-71-803-times-faster-805030df4f06)。这篇文章不包括运行的数据或结果,但我能够在网上找到数据。我想为自己的工作复制结果,但输出不正确。
我已经包含了文章中的一小部分原始数据框和相应的代码:
import pandas as pd
data = {'HomeTeam':['Burnley','Crystal Palace','Everton','Hull','Man City','Middlesbrough','Southampton',
'Arsenal','Bournemouth','Chelsea','Man United','Burnley','Leicester','Stoke'], 'AwayTeam':['Swansea','West Brom','Tottenham','Leicester','Sunderland','Stoke','Watford','Liverpool','Man United',
'West Ham','Southampton','Liverpool','Arsenal','Man City'], 'FTR': ['A','A','D','H','H','D','D','A','A','H','H','H','D','A']}
leaguedf = pd.DataFrame(data)
def soc_iter(TEAM,home,away,ftr):
leaguedf['Draws'] = 'No_Game'
leaguedf.loc[((home == TEAM) & (ftr == 'D')) | ((away == TEAM) & (ftr == 'D')), 'Draws'] = 'Draw'
leaguedf.loc[((home == TEAM) & (ftr != 'D')) | ((away == TEAM) & (ftr != 'D')), 'Draws'] = 'No_Draw'
leaguedf['Draws']=soc_iter('Arsenal',leaguedf['HomeTeam'].values, leaguedf['AwayTeam'].values, leaguedf['FTR'].values)
leaguedf
当我运行代码时,输出列“Draws”只生成“None”输出,而不是“Draw”或“No_Draw”。
代码有什么问题?
【问题讨论】:
标签: numpy vectorization