Python中将JSON转为Pandas DataFrame失败,求解决方法
问题分析与解决方案
错误原因
你遇到的NameError是因为未导入json模块,但更关键的是这行代码完全冗余:requests.Response对象的.json()方法已经直接将API返回的JSON数据转换成了Python字典(你打印的<class 'dict'>已经证明了这一点),不需要再用json.loads()处理,而且json.loads()需要传入字符串而非Response对象,本身用法也错误。
函数弃用说明
requests.get()和response.json()均未被弃用,你的问题是代码冗余和用法错误导致的,与函数弃用无关。
修正后的代码(快速转成表格格式)
import requests import pandas as pd # 替换[TADA]为你的实际API密钥 full_request = "https://developer.nrel.gov/api/alt-fuel-stations/v1.json?api_key=[TADA]&fuel_type=E85,ELEC&location=NewWestminster" gotten = requests.get(full_request) # 确认请求成功 if gotten.status_code == 200: # 直接解析JSON为字典 data = gotten.json() # NREL API返回的站点数据在'fuel_stations'字段下,提取该列表生成DataFrame df = pd.DataFrame(data['fuel_stations']) # 查看前几行数据验证 print(df.head()) # 导出为CSV表格 df.to_csv('new_west_alt_fuel_stations.csv', index=False) else: print(f"请求失败,状态码:{gotten.status_code}")
关键说明
- NREL的这个API返回的JSON结构中,实际的站点列表数据嵌套在
fuel_stations键下,必须提取这个列表来创建DataFrame,否则直接用整个字典创建会得到不符合预期的表格。 - 导出CSV时设置
index=False可以避免生成多余的索引列。
内容的提问来源于stack exchange,提问作者Abed
相关产品推荐
相关产品推荐

