PYTHON:在“for”循环数据帧结束时出现奇怪的错误

时间:2021-01-21 00:58:50

标签: python sql pandas sqlite

我正在编写一个脚本,用于从网站挖掘棒球统计数据并将其输入 SQLite 数据库。这段代码是我从我的一个数据帧 (hit_stats) 转储到数据库中最大的表 (Hitting Stats) 的地方:

d = 0
for row in hit_stats:
    curs.execute('INSERT INTO Hitting_Stats (player_id, season_h, games_h, plate_appearances, at_bats,
runs, hits, doubles, triples, homeruns, total_bases, runs_batted_in, stolen_bases, caught_stealing, 
sacrifice_hits, sacrifice_flies, walks, hits_by_pitch, strikeouts_h, grounded_into_double_plays, 
batting_average, slugging_percentage, on_base_percentage) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
 ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (temp_player_id, hit_stats['Year'][d], hit_stats['G'][d],
hit_stats['PA'][d], hit_stats['AB'][d], hit_stats['R'][d], hit_stats['H'][d], hit_stats['2B'][d],
hit_stats['3B'][d], hit_stats['HR'][d], hit_stats['TB'][d], hit_stats['RBI'][d], hit_stats['SB'][d],
hit_stats['CS'][d], hit_stats['SH'][d], hit_stats['SF'][d], hit_stats['BB'][d], hit_stats['HP'][d],
hit_stats['SO'][d], hit_stats['GDP'][d], hit_stats['AVG'][d], hit_stats['SLG'][d], hit_stats['OBP'][d]))
    d += 1

(缩进在我的实际代码中是正确的)

当我运行脚本时,它说:“KeyError: 3”

奇怪的是,当我打开 Jupyter Notebook 并运行以下较小的代码时,我在单行/系列中一直得到正确的输出,但是在输出后的最后我得到了 KeyError:< /p>

d = 0
for row in hit_stats:
    print(hit_stats['Year'][d]) 
    d += 1

所以在循环结束之前一切似乎都很好。有什么想法吗?

如果不是很明显,我是初学者,所以如果有更好的方法可以做到这一点,请随时将我发送到资源。提前感谢您的时间!

1 个答案:

答案 0 :(得分:0)

在我的头撞墙一段时间后,我意识到 for 循环默认遍历数据帧的列,而不是行。我使用 .iterrows 重新编写了循环并且它起作用了。