我在这个链接的桌子上使用Pandas:
http://sports.yahoo.com/nfl/stats/byposition?pos=QB&conference=NFL&year=season_2014&sort=49&timeframe=All
我正在尝试从每个(相关)行创建播放器对象。所以我想要第3行到最后,我正在使用一堆不同的字段来构建一个玩家对象,包括名字,团队,传球码等。
这是我的尝试:
def getAllQBs():
QBs = []
table = pd.read_html(requests.get(QB_LINK).content)[5]
finalTable = table[2 : ]
print(finalTable)
for row in finalTable.iterrows():
print(row)
name = row[0]
team = row[1]
passingYards = row[7]
passingTouchdowns = row[10]
interceptions = row[11]
rushingYards = row[13]
rushingTouchdowns = row[16]
rushingFumbles = row[19]
newQB = QB(name, team, rushingYards, rushingTouchdowns, rushingFumbles, passingYards, passingTouchdowns, interceptions)
QBs.append(newQB)
print(newQB.toString())
return QBs
传递码是行中左起第8个元素,所以我想我会使用row[7]
来访问它。但是,当我运行此功能时,我得到:
Traceback (most recent call last):
File "main.py", line 66, in <module>
main()
File "main.py", line 64, in main
getAllQBs()
File "main.py", line 27, in getAllQBs
passingYards = row[7]
IndexError: tuple index out of range
看起来我无意中使用了列。但是,我使用DataFrame.iterrows()
,我认为会照顾这个......
有什么想法吗?
谢谢, bclayman
答案 0 :(得分:1)
iterrows()
生成(index, Series)
形式的元组,其中Series是您尝试访问的行数据。在这种情况下你的索引没有意义,你可以将它解压缩到一个虚拟变量,就像这样。
for (_, row) in finalTable.iterrows():
.....