如何在Python/Pandas中解析棒球API嵌套字典并提取客队击球总计
解决方法:解析MLB Stats API的客队击球总计并转为DataFrame
你的代码存在两个核心问题:
- API函数误用:
statsapi.boxscore()返回的是纯文本格式的比赛摘要,并非结构化JSON数据,应该使用statsapi.boxscore_data()的返回结果。 - 字典访问逻辑错误:
awayBattingTotals本身就是包含总计数据的字典,不存在awayBattingfields这个键,也无需再去获取"Totals"子键。
正确代码示例
import pandas as pd import statsapi # 获取结构化JSON响应数据 boxscore_data = statsapi.boxscore_data(662647) # 直接提取客队击球总计字典 away_batting_totals = boxscore_data['awayBattingTotals'] # 将单个字典转为DataFrame(需包装成列表,适配pandas的数据源要求) df = pd.DataFrame([away_batting_totals]) print(df)
代码说明
- 第一步通过
statsapi.boxscore_data()获取完整的比赛结构化数据,返回值为Python字典,包含所有细分数据模块。 - 直接通过键名
'awayBattingTotals'提取目标总计数据,该键对应的值就是需要的客队击球统计字典。 - 由于
pd.DataFrame()默认接受可迭代数据源,将单个字典放入列表中,即可生成包含所有统计字段的单行DataFrame。
简化版输出示例
| namefield | ab | r | h | hr | rbi | bb | k | lob | ... |
|---|---|---|---|---|---|---|---|---|---|
| Totals | 33 | 2 | 7 | 1 | 2 | 0 | 8 | 13 | ... |
内容的提问来源于stack exchange,提问作者sajeeni
相关产品推荐
相关产品推荐

