#json #pandas #dataframe #nested
Вопрос:
Мне было интересно, может ли кто-нибудь помочь мне прочитать вложенный файл json, как показано ниже, во фрейм данных. Мы будем очень признательны за любую помощь.
[
{
"cust_batch_id": "1",
"warning_count": 0,
"used_vehicles": {
"used_vehicle_list": [
{
"publish_date": "7/30/2021",
"road_assist_warranty": "5-year/60,000-mile",
"model_number_list": [
"K8H"
]
}
],
"template": 4,
"data_available": true
}
},
{
"cust_batch_id": "1",
"warning_count": 0,
"used_vehicles": {
"used_vehicle_list": [
{
"publish_date": "7/30/2021",
"road_assist_warranty": "3-year/36,000-mile, ",
"model_number_list": [
"FC2F5JEW"
]
}
],
"template": 4,
"data_available": true
}
},
{
"cust_batch_id": "1",
"warning_count": 0,
"used_vehicles": {
"used_vehicle_list": [
{
"publish_date": "7/30/2021",
"road_assist_warranty": "5-year/60,000-mile",
"model_number_list": [
"P0L"
]
}
],
"template": 4,
"data_available": true
}
}
]
Ответ №1:
js
это образец JSON, который вы предоставили- простой случай нормализации JSON,
explode()
списка, затем сопоставление встроенного диктанта со столбцами
df = pd.json_normalize(js)
df.join(df.loc[:,"used_vehicles.used_vehicle_list"].explode().apply(pd.Series))
cust_batch_id | warning_count | used_vehicles.used_vehicle_list | used_vehicles.шаблон | used_vehicles.data_available | publish_date | road_assist_warranty | model_number_list | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | [{‘дата публикации’: ‘7/30/2021’, ‘гарантия безопасности дорожного движения’: ‘5 лет/60 000 миль’, ‘список моделей»: [‘K8H’]}] | 4 | Правда | 7/30/2021 | 5-year/60,000-mile | [‘K8H’] |
1 | 1 | 0 | [{‘дата публикации’: ‘7/30/2021’, ‘гарантия безопасности дорожного движения’: ‘3 года/36 000 миль ‘, ‘список моделей’: [‘FC2F5JEW’]}] | 4 | Правда | 7/30/2021 | 3-year/36,000-mile, | [‘FC2F5JEW’] |
2 | 1 | 0 | [{‘дата публикации’: ‘7/30/2021’, ‘гарантия безопасности дорожного движения’: ‘5 лет/60 000 миль’, ‘список моделей’: [‘P0L’]}] | 4 | Правда | 7/30/2021 | 5-year/60,000-mile | [‘P0L’] |
предпосылки
- как сохранить JSON в файл и как загрузить JSON из файла
- это ваш образец JSON
- вы также можете декодировать JSON, закодированный в строке с
json.loads(str)
import json
from pathlib import Path
js = [{'cust_batch_id': '1',
'warning_count': 0,
'used_vehicles': {'used_vehicle_list': [{'publish_date': '7/30/2021',
'road_assist_warranty': '5-year/60,000-mile',
'model_number_list': ['K8H']}],
'template': 4,
'data_available': True}},
{'cust_batch_id': '1',
'warning_count': 0,
'used_vehicles': {'used_vehicle_list': [{'publish_date': '7/30/2021',
'road_assist_warranty': '3-year/36,000-mile, ',
'model_number_list': ['FC2F5JEW']}],
'template': 4,
'data_available': True}},
{'cust_batch_id': '1',
'warning_count': 0,
'used_vehicles': {'used_vehicle_list': [{'publish_date': '7/30/2021',
'road_assist_warranty': '5-year/60,000-mile',
'model_number_list': ['P0L']}],
'template': 4,
'data_available': True}}]
fn = Path.cwd().joinpath("SO_js.json")
# save to a file
with open(fn, "w") as f: json.dump(js, f)
# load from a file
with open(fn) as f: js = json.load(f)
Комментарии:
1. Спасибо, Роб, за твою помощь. Я не знаком с JSON. Я попытался прочитать входные данные в объект JSON несколькими способами. Ничего не сработало. Не могли бы вы, пожалуйста, показать свой шаг, на котором вы помещаете образцы в js? Спасибо!
2. Я вставил в ответ больше. Я не знаю, откуда вы взяли JSON, довольно часто это API, использующий пакет запросов . Это имеет встроенный метод
json()
3. Роб, спасибо тебе!
4. Просто добавлю, что чтение такого рода данных-не моя работа. Поэтому я почти уверен, что делаю это не так, как задумано.