У меня есть json трехуровневой глубины.
Я хочу преобразовать его в фрейм данных с пятью столбцами.
id
имя
код
уровень
parent_id
Итак:
Часть, с которой я борюсь, заключается в том, что я могу извлечь каждый вложенный элемент, но не могу найти элегантный способ сохранить «parent_id». Должны быть более элегантные способы сделать это. Любые подсказки приветствуются.
source = response.json()
print ('there are ' + str(len(source)) + ' records')
df_L1 = df
df_L2 = json_normalize(df_L1['subLevelCategories'][0])
df_L3 = json_normalize(df_L2['subLevelCategories'][0]) #store for later !!!!!
df_L2_wrapper = df_L2['id']
df_L3_wrapper = df_L3['id']
df_L2_wrapper.name = 'parent_id'
df_L3_wrapper.name = 'parent_id'
df_L1 = df_L1.head(5)
df_L2 = df_L2.head(5)
df_L3 = df_L3.head(5)
df_L3_wrapper = df_L3_wrapper.head(5)
df_L2_wrapper = df_L2_wrapper.head(5)
# Build of df_L1
df_L1 = df_L1.drop(['subLevelCategories'], axis=1)
df_L1['parentid']=0
# Build of df_L2
df_L2 = df_L2.drop(['name','code','level'], axis=1)
# Rename the Series
df_L2 = json_normalize(df_L2['subLevelCategories'][0])
# Concatenate the DataFrame and the renamed Series
df_L2 = pd.concat([df_L2, df_L2_wrapper], axis=1)
df_L2 = df_L2.drop(['subLevelCategories'], axis=1)
# ////// L2 is built.
# Build of df_L3
df_L3 = df_L3.drop(['subLevelCategories'], axis=1)
df_L3 = pd.concat([df_L3, df_L3_wrapper], axis=1)
df_combined = pd.concat([df_L1, df_L2, df_L3], ignore_index=True)
РЕДАКТИРОВАТЬ: Образец был исправлен путем заключения его в разделы '[' и ']'.
источник взят из
response = requests.get(url, headers=headers)
source = response.json()
Пример JSON выглядит следующим образом:
[
{
"id": 3372,
"name": "Archive",
"code": null,
"level": 1,
"subLevelCategories": [
{
"id": 16708,
"name": ".....",
"code": null,
"level": 2,
"subLevelCategories": [
{
"id": 16727,
"name": ".........",
"code": null,
"level": 3,
"subLevelCategories": null
},
{
"id": 16726,
"name": "........",
"code": null,
"level": 3,
"subLevelCategories": null
}
]
},
{
"id": 16701,
"name": ".......",
"code": null,
"level": 2,
"subLevelCategories": [
{
"id": 16782,
"name": "......",
"code": null,
"level": 3,
"subLevelCategories": null
},
{
"id": 16785,
"name": "......",
"code": null,
"level": 3,
"subLevelCategories": null
}
]
}
]
}
]
Подробнее здесь: https://stackoverflow.com/questions/792 ... -dataframe
Преобразование вложенного json на три уровня в фрейм данных ⇐ Python
Программы на Python
-
Anonymous
1732911147
Anonymous
У меня есть json трехуровневой глубины.
Я хочу преобразовать его в фрейм данных с пятью столбцами.
id
имя
код
уровень
parent_id
Итак:
Часть, с которой я борюсь, заключается в том, что я могу извлечь каждый вложенный элемент, но не могу найти элегантный способ сохранить «parent_id». Должны быть более элегантные способы сделать это. Любые подсказки приветствуются.
source = response.json()
print ('there are ' + str(len(source)) + ' records')
df_L1 = df
df_L2 = json_normalize(df_L1['subLevelCategories'][0])
df_L3 = json_normalize(df_L2['subLevelCategories'][0]) #store for later !!!!!
df_L2_wrapper = df_L2['id']
df_L3_wrapper = df_L3['id']
df_L2_wrapper.name = 'parent_id'
df_L3_wrapper.name = 'parent_id'
df_L1 = df_L1.head(5)
df_L2 = df_L2.head(5)
df_L3 = df_L3.head(5)
df_L3_wrapper = df_L3_wrapper.head(5)
df_L2_wrapper = df_L2_wrapper.head(5)
# Build of df_L1
df_L1 = df_L1.drop(['subLevelCategories'], axis=1)
df_L1['parentid']=0
# Build of df_L2
df_L2 = df_L2.drop(['name','code','level'], axis=1)
# Rename the Series
df_L2 = json_normalize(df_L2['subLevelCategories'][0])
# Concatenate the DataFrame and the renamed Series
df_L2 = pd.concat([df_L2, df_L2_wrapper], axis=1)
df_L2 = df_L2.drop(['subLevelCategories'], axis=1)
# ////// L2 is built.
# Build of df_L3
df_L3 = df_L3.drop(['subLevelCategories'], axis=1)
df_L3 = pd.concat([df_L3, df_L3_wrapper], axis=1)
df_combined = pd.concat([df_L1, df_L2, df_L3], ignore_index=True)
РЕДАКТИРОВАТЬ: Образец был исправлен путем заключения его в разделы '[' и ']'.
источник взят из
response = requests.get(url, headers=headers)
source = response.json()
Пример JSON выглядит следующим образом:
[
{
"id": 3372,
"name": "Archive",
"code": null,
"level": 1,
"subLevelCategories": [
{
"id": 16708,
"name": ".....",
"code": null,
"level": 2,
"subLevelCategories": [
{
"id": 16727,
"name": ".........",
"code": null,
"level": 3,
"subLevelCategories": null
},
{
"id": 16726,
"name": "........",
"code": null,
"level": 3,
"subLevelCategories": null
}
]
},
{
"id": 16701,
"name": ".......",
"code": null,
"level": 2,
"subLevelCategories": [
{
"id": 16782,
"name": "......",
"code": null,
"level": 3,
"subLevelCategories": null
},
{
"id": 16785,
"name": "......",
"code": null,
"level": 3,
"subLevelCategories": null
}
]
}
]
}
]
Подробнее здесь: [url]https://stackoverflow.com/questions/79235140/converting-a-nested-json-three-levels-deep-to-dataframe[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия