Python从JSON创建DataFrame报错:Invalid file path or buffer object type
问题解决方案
错误原因
pd.read_json()的参数要求是JSON格式字符串、文件路径或文件对象,但你已经通过json.loads(response.text)把响应文本解析成了Python字典(<class 'dict'>),将字典传入read_json()就会触发类型不匹配的报错。
解决方法
直接将解析后的Python字典传入pd.DataFrame()构造函数即可,无需使用pd.read_json()。提供两种实现方式:
方式一:使用requests内置的JSON解析方法
import pandas as pd import requests response = requests.get('https://kp.gfz-potsdam.de/app/json/?start=2024-01-01T00%3A00%3A00Z&end=2024-04-21T23%3A59%3A59Z&index=Kp&status=def#kpdatadownload-143') response_json = response.json() # 直接解析响应为字典 df = pd.DataFrame(response_json) print(df)
方式二:保留json.loads的写法
import pandas as pd import requests import json response = requests.get('https://kp.gfz-potsdam.de/app/json/?start=2024-01-01T00%3A00%3A00Z&end=2024-04-21T23%3A59%3A59Z&index=Kp&status=def#kpdatadownload-143') response_json = json.loads(response.text) df = pd.DataFrame(response_json) # 用字典直接构造DataFrame print(df)
补充说明
如果返回的JSON数据是嵌套结构(比如数据嵌套在某个键下,例如{"data": [{}, {}]}),需要针对具体结构调整,比如提取对应键的值再构造DataFrame:
df = pd.DataFrame(response_json["data"])
内容的提问来源于stack exchange,提问作者user24012260
相关产品推荐
相关产品推荐

