Можно ли создать фрейм данных из JSON, отформатированного как текст, а не как объект Python?
С помощью объекта Python я мог бы, например, сделать:
from pandas.io.json import json_normalize
import requests
response = requests.get(url, params).json()
df = json_normalize(response)
но я хочу добиться того же с response = requests.get(url,params).text (хотя выравнивание не требуется).
@pygo почему понимание списка?
@pygo Я не буду читать JSON из файла, я хочу поместить ответ requests.get(url,params).text в фрейм данных.
@barciewicz, да, понял, вот и я сказал, что неправильно прочитал вопрос, извините :-)
Гарантированно ли .text является действительной строкой JSON?






Обычно я создаю фрейм данных из json, используя read_json.
import pandas as pd
import requests
data = requests.get(url, params).content
df = pd.read_json(data)
df.head()
Спасибо, к сожалению, это дает мне ValueError: arrays must all be same length в строке read_json, я думаю, потому что мой JSON вложен. Вы знаете, как это обойти?
заменить строку read_json на: from pandas.io.json import json_normalize, загружает df = json_normalize (загружает (данные))
Если ваш response = requests.get(url,params).text гарантированно предоставит вам действительную строку JSON, все, что вам нужно сделать, это следующее:
from pandas.io.json import json_normalize, loads
import requests
response = requests.get(url, params).text
df = json_normalize(loads(response))
Здесь мы используем jsonloads для преобразования строки JSON в объект Python перед передачей обратно в json_normalize.
Можете ли вы поместить несколько строк данных?