#python #json #pandas
#python #json #pandas
Вопрос:
Я новичок в Python и пытаюсь преобразовать следующий JSON в фрейм panda.
Формат json выглядит следующим образом. Я уменьшил столбцы и строки. Существует около 8 столбцов, и каждый json содержит около 20000 строк
{
"DataFeed":[
{
"Columns":[
{
"Name":"customerID",
"Category":"Dimension",
"Type":"String"
},
{
"Name":"InvoiceID",
"Category":"Dimension",
"Type":"String"
},
{
"Name":"storeloc",
"Category":"Dimension",
"Type":"String"
}
],
"Rows":[
{
"customerID":"id128404805",
"InvoiceID":"IN3956",
"storeloc":"TX359"
},
{
"customerID":"id128404806",
"InvoiceID":"IN0054",
"storeloc":"CA235"
},
{
"customerID":"id128404807",
"InvoiceID":"IN7439",
"storeloc":"AZ2309"
}
]
}
]
}
я пытаюсь загрузить его в фрейм данных pandas. Количество столбцов в файле json одинаковое. Количество строк составляет около 10000.
Я пытаюсь попасть в строки и вставить в таблицу после определенных вычислений.
Я пытаюсь использовать json_normalize, но мне трудно перейти к уровню строк и после этого нормализоваться. Я знаю, что это должно быть решение проблемы, но я новичок в работе с Json. Спасибо
Комментарии:
1. Поток данных не похож на допустимую строку JSON. Можете ли вы подтвердить?
2. Я изменил строку JSON. Была удалена одна конечная запятая.
3. Возможно, вы пробовали что-то подобное?:
pd.DataFrame.from_dict(json_data['DataFeed'][0]['Rows'])
.json_data
содержит строку JSON, которую вы опубликовали выше (в данном случае словарь python).
Ответ №1:
попробуйте pd.json_normalize()
с record_path
аргументом.
Обратите внимание, вам понадобится pandas 0.25 или выше.
предполагая, что ваш объект json j
df = pd.json_normalize(j,record_path=['DataFeed','Rows'])
print(df)
customerID InvoiceID storeloc
0 id128404805 IN3956 TX359
1 id128404806 IN0054 CA235
2 id128404807 IN7439 AZ2309