我正在编写一个脚本,用于从网站挖掘棒球统计数据并将其输入 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
所以在循环结束之前一切似乎都很好。有什么想法吗?
如果不是很明显,我是初学者,所以如果有更好的方法可以做到这一点,请随时将我发送到资源。提前感谢您的时间!
答案 0 :(得分:0)
在我的头撞墙一段时间后,我意识到 for 循环默认遍历数据帧的列,而不是行。我使用 .iterrows 重新编写了循环并且它起作用了。