Сглаживание многоуровневого JSON
У меня есть такая строка JSON:
[
{
"numberOfStores": 1,
"storeList": [
{
"country": "US",
"zipCode": "19702-3221",
"city": "NEWARK",
"displayName": "001",
"state": "DE",
"identifier": "001",
"locationName": "Newark Mall",
"manager": "TOM JERRY",
"address1": "900 XYZ AVE",
"active": 1,
"phone": "(302) 111-2222",
"openDate": {
"date": 1,
"hours": null,
"seconds": null,
"month": 9,
"timezoneOffset": 420,
"year": 98,
"minutes": null,
"time": 907225200000,
"day": 4
}
}
],
"stateCode": "DE",
"state": "Delaware"
},
{
"numberOfStores": 1,
"storeList": [
{
"country": "US",
"zipCode": "20018-3840",
"city": "WASHINGTON",
"displayName": "002",
"state": "DC",
"identifier": "002",
"locationName": "Washington DC",
"manager": "MICKEY MOUSE",
"address1": "1600 ABCD ST NE",
"active": 1,
"phone": "(202) 111-2222",
"openDate": {
"date": 29,
"hours": null,
"seconds": null,
"month": 10,
"timezoneOffset": 480,
"year": 112,
"minutes": null,
"time": 1354176000000,
"day": 4
}
}
],
"stateCode": "DC",
"state": "District of Columbia"
},
{"numberOfStores": 2, "storeList": [{"country": "US","zipCode": "73114","city": "OKLAHOMA CITY», «displayName»: «003», «state»: «ОК», «идентификатор»: «003», «locationName»: «Оклахома-Сити», «менеджер»: «ТОМ ТОМ», «адрес1»: «13200 MNO AVE», «активный»: 1, «телефон»: «(405) 111-2222», «openDate»: {«дата»: 16, «часы»: ноль, «секунды»: ноль, «месяц»: 4, «timezoneOffset»: 420, «год»: 119, "minutes": null,"time": 1557990000000,"day": 4}},{"country": "US","zipCode": "74133-7179","город": "ТУЛСА", "displayName": "004", "состояние": "ОК", "идентификатор": "004", "locationName": "Талса", "менеджер": "СМИТ СМИТ", " address1 ":" 800 S MEMORIAL DR "," active ": 1," phone ":" (918) 111-2222 "," openDate": {" date ": 21," hours": null," seconds": null, «месяц»: 3, «timezoneOffset»: 420, «год»: 116, «минуты»: null, «время»: 1461222000000, «день»: 4}}], «stateCode»: «ОК», « state ":" Оклахома "}]004 »,« locationName »:« Талса »,« manager »:« SMITH SMITH »,« address1 »:« 800 S MEMORIAL DR »,« active »: 1,« phone »:« (918) 111-2222 », «openDate»: {«дата»: 21, «часы»: ноль, «секунды»: ноль, «месяц»: 3, «timezoneOffset»: 420, «год»: 116, «минуты»: ноль, «время» : 1461222000000, "день": 4}}], "stateCode": "ОК", "состояние": "Оклахома"}]004 »,« locationName »:« Талса »,« manager »:« SMITH SMITH »,« address1 »:« 800 S MEMORIAL DR »,« active »: 1,« phone »:« (918) 111-2222 », «openDate»: {«дата»: 21, «часы»: ноль, «секунды»: ноль, «месяц»: 3, «timezoneOffset»: 420, «год»: 116, «минуты»: ноль, «время» : 1461222000000, "день": 4}}], "stateCode": "ОК", "состояние": "Оклахома"}]"seconds": null, "month": 3, "timezoneOffset": 420, "year": 116, "minutes": null, "time": 1461222000000, "day": 4}}], "stateCode": " ОК "," штат ":" Оклахома "}]"seconds": null, "month": 3, "timezoneOffset": 420, "year": 116, "minutes": null, "time": 1461222000000, "day": 4}}], "stateCode": " ОК "," штат ":" Оклахома "}]
Пытаюсь сгладить его, следуя примерам, которые я нашел на этом сайте и в других подобных местах.
x = json.loads(stringX)
df3 = json_normalize(x)
pprint (df3)
Но JSON для и
openDate
остается несглаженным, независимо от того, что я пробовал вот так (строки усечены):
numberOfStores storeList stateCode state
0 1 [{'country': 'US', 'zipCode': '19702-3221', 'c... DE Delaware
1 1 [{'country': 'US', 'zipCode': '20018-3840', 'c... DC District of Columbia
В схеме JSON выше -
storeList
может иметь несколько магазинов.
Результат, который я пытаюсь получить, будет иметь по одной строке для каждого хранилища в каждом состоянии; например, два хранилища в состоянии означают две строки вывода для этого состояния. Государство - это самый внешний группирующий фактор.
Как это сделать?
Желаемый результат выглядит так:
+---+----------------+---------+--------------+---------------+--------------+-------+------------+---------------+--------------+-------------------+--------+----------------+------------------+----------------+-------------------------+---------------+---------------+------------------+---------------+--------------+-----------+----------------------+
| | numberOfStores | country | zipCode | city | displayName | state | identifier | locationName | manager | address1 | active | phone | openDate.seconds | openDate.month | openDate.timezoneOffset | openDate.year | openDate.date | openDate.minutes | openDate.time | openDate.day | stateCode | state |
+---+----------------+---------+--------------+---------------+--------------+-------+------------+---------------+--------------+-------------------+--------+----------------+------------------+----------------+-------------------------+---------------+---------------+------------------+---------------+--------------+-----------+----------------------+
| 0 | 1 | US | 19702-3221 | NEWARK | 001 | DE | 001 | Newark Mall | TOM JERRY | 900 XYZ AVE | 1 | (302)-111-2222 | None | 9 | 420 | 98 | 1 | None | 907225200000 | 4 | DE | Delaware |
+---+----------------+---------+--------------+---------------+--------------+-------+------------+---------------+--------------+-------------------+--------+----------------+------------------+----------------+-------------------------+---------------+---------------+------------------+---------------+--------------+-----------+----------------------+
| 1 | 1 | US | 20018-3840 | WASHINGTON | 002 | DC | 002 | Washington DC | MICKEY MOUSE | 1600 ABCD ST NE | 1 | (202)-111-2222 | None | 10 | 480 | 112 | 29 | None | 1354176000000 | 4 | DC | District of Columbia |
+---+----------------+---------+--------------+---------------+--------------+-------+------------+---------------+--------------+-------------------+--------+----------------+------------------+----------------+-------------------------+---------------+---------------+------------------+---------------+--------------+-----------+----------------------+
| 2 | 2 | US | 73114 | OKLAHOMA CITY | 003 | OK | 003 | Oklahoma City | TOM TOM | 13200 MNO AVE | 1 | (405)-111-2222 | None | 4 | 420 | 119 | 16 | None | 1557990000000 | 4 | OK | Oklahoma |
+---+----------------+---------+--------------+---------------+--------------+-------+------------+---------------+--------------+-------------------+--------+----------------+------------------+----------------+-------------------------+---------------+---------------+------------------+---------------+--------------+-----------+----------------------+
| 3 | 2 | US | 74133-7179 | TULSA | 004 | OK | 004 | Tulsa | SMITH SMITH | 800 S MEMORIAL DR | 1 | (918)-111-2222 | None | 3 | 420 | 116 | 21 | None | 1461222000000 | 4 | OK | Oklahoma |
+---+----------------+---------+--------------+---------------+--------------+-------+------------+---------------+--------------+-------------------+--------+----------------+------------------+----------------+-------------------------+---------------+---------------+------------------+---------------+--------------+-----------+----------------------+