将字典列表转Pandas DataFrame遇ValueError错误求助
解决JSON字符串转Pandas DataFrame的ValueError问题
问题根源
你当前的scrapped_data是JSON格式的字符串,而Pandas的DataFrame构造器、json_normalize等方法需要的是Python原生的字典/列表对象,直接传入字符串必然报错。
两种正确解决方案
方案1:直接用response.json()解析(推荐)
requests库的Response对象自带json()方法,可以直接把返回的JSON数据解析成Python的字典列表,无需手动处理字符串:
import requests import pandas as pd response = requests.get(url) # 直接解析为Python列表(包含字典元素) scrapped_data = response.json() # 转换为DataFrame df = pd.DataFrame(scrapped_data)
方案2:手动解析JSON字符串
如果因为某些原因必须使用response.text,可以用Python标准库json的loads()方法将字符串转为Python对象:
import requests import pandas as pd import json response = requests.get(url) scrapped_data = response.text # 将JSON字符串转为Python列表 data_list = json.loads(scrapped_data) # 转换为DataFrame df = pd.DataFrame(data_list)
为什么之前的方法会报错
pd.DataFrame(scrapped_data):把字符串当成了字符序列,每个字符被当作一行数据,不符合DataFrame的构造要求,触发ValueError。pd.DataFrame_from_dict(scrapped_data):该方法需要传入字典,而字符串不是字典类型,同样报错。pd.json_normalize(scrapped_data):该方法要求输入是字典或字典列表,传入字符串会触发NotImplementedError。
执行上述正确方案后,你就能得到预期格式的DataFrame:
| id | date | value |
|---|---|---|
| 123456 | 12-12-2022 | 37 |
| 123456 | 13-12-2022 | 38 |
内容的提问来源于stack exchange,提问作者user20350073
相关产品推荐
相关产品推荐

