В этой статье мы рассмотрим, как эффективно манипулировать структурами данных JSON с вложенными объектами с помощью Pandas.
Рассмотрим следующий JSON структура:
{
"number": "",
"date": "01.10.2016",
"name": "R 3932",
"locations": [
{
"depTimeDiffMin": "0",
"name": "Spital am Pyhrn Bahnhof",
"arrTime": "",
"depTime": "06:32",
"platform": "2",
"stationIdx": "0",
"arrTimeDiffMin": "",
"track": "R 3932"
},
{
"depTimeDiffMin": "0",
"name": "Windischgarsten Bahnhof",
"arrTime": "06:37",
"depTime": "06:40",
"platform": "2",
"stationIdx": "1",
"arrTimeDiffMin": "1",
"track": ""
},
{
"depTimeDiffMin": "",
"name": "Linz/Donau Hbf",
"arrTime": "08:24",
"depTime": "",
"platform": "1A-B",
"stationIdx": "22",
"arrTimeDiffMin": "1",
"track": ""
}
]
}
функция pandas json_normalize позволяет нам сводить вложенные объекты в табличный формат:
import json
with open('myJson.json') as data_file:
data = json.load(data_file)
df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'],
record_prefix='locations_')
В результате создается DataFrame со столбцами для каждого ключа во вложенном объекте "locations".
Если сведение не выполняется при желании вы можете использовать возможности группировки и конкатенации Pandas:
df = pd.read_json("myJson.json")
df.locations = pd.DataFrame(df.locations.values.tolist())['name']
df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index()
Этот подход объединяет "местоположения" " значения в виде строки, разделенной запятыми, для каждой уникальной комбинации "даты", "имени" и "число".
Используя функции pandas json_normalize и группировки/объединения, мы можем эффективно обрабатывать вложенные структуры JSON, что позволяет нам извлекать и манипулировать данными в табличном формате.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3