Pandas Dataframe无法按预期工作

时间:2015-07-19 20:33:31

标签: python pandas

我在这个链接的桌子上使用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

1 个答案:

答案 0 :(得分:1)

iterrows()生成(index, Series)形式的元组,其中Series是您尝试访问的行数据。在这种情况下你的索引没有意义,你可以将它解压缩到一个虚拟变量,就像这样。

for (_, row) in finalTable.iterrows():
    .....