[英]Flatten nested json from API in python
我是 Python 的新手,我有以下嵌套 Json 格式的假期日歷
{
'Holiday_Calendar':'Holilday Calendar - Texas',
'Holiday_Calendar_Group':[
{
'Holiday_Date_Time':'2019-12-25T08:00:00.000-08:00',
'Holiday_Name':'Christmas Day'
},
{
'Holiday_Date_Time':'2019-07-04T08:00:00.000-07:00',
'Holiday_Name':'Independence Day'
},
{
'Holiday_Date_Time':'2019-09-02T08:00:00.000-07:00',
'Holiday_Name':'Labor Day'
},
{
'Holiday_Date_Time':'2019-05-27T08:00:00.000-07:00',
'Holiday_Name':'Memorial Day'
},
{
'Holiday_Date_Time':'2019-01-01T08:00:00.000-08:00',
'Holiday_Name':"New Year's Day"
},
{
'Holiday_Date_Time':'2019-11-28T08:00:00.000-08:00',
'Holiday_Name':'Thanksgiving Day'
}
]
},
{
'Holiday_Calendar':'Holilday Calendar - Kansas',
'Holiday_Calendar_Group':[
{
'Holiday_Date_Time':'2019-12-25T08:00:00.000-08:00',
'Holiday_Name':'Christmas Day'
},
{
'Holiday_Date_Time':'2019-11-29T08:00:00.000-08:00',
'Holiday_Name':'Day After Thanksgiving'
},
{
'Holiday_Date_Time':'2019-07-04T08:00:00.000-07:00',
'Holiday_Name':'Independence Day'
},
{
'Holiday_Date_Time':'2019-09-02T08:00:00.000-07:00',
'Holiday_Name':'Labor Day'
},
{
'Holiday_Date_Time':'2019-05-27T08:00:00.000-07:00',
'Holiday_Name':'Memorial Day'
},
{
'Holiday_Date_Time':'2019-01-01T08:00:00.000-08:00',
'Holiday_Name':"New Year's Day"
},
{
'Holiday_Date_Time':'2019-11-28T08:00:00.000-08:00',
'Holiday_Name':'Thanksgiving Day'
}
]
}
}
我需要得到 flatten / simple json 來創建一個 pd 數據框
我嘗試使用 json_normalize 但它似乎不起作用
abc =[]
for index, row in result.iterrows():
r1 = json_normalize(row['Holiday_Calendar_Group'],record_path=['Holiday_Calendar','Holiday_Calendar_Group'], meta =['Holiday_Calendar',['Holiday_Date_Time','Holiday_Name']])
abc.append(r1)
預期結果是Holiday_Calendar, Holiday_Date_Time , Holiday_Name
result = [{
'Holiday_Calendar':'Holilday Calendar - Texas',
'Holiday_Calendar_Group':[
{
'Holiday_Date_Time':'2019-12-25T08:00:00.000-08:00',
'Holiday_Name':'Christmas Day'
},
{
'Holiday_Date_Time':'2019-07-04T08:00:00.000-07:00',
'Holiday_Name':'Independence Day'
},
{
'Holiday_Date_Time':'2019-09-02T08:00:00.000-07:00',
'Holiday_Name':'Labor Day'
},
{
'Holiday_Date_Time':'2019-05-27T08:00:00.000-07:00',
'Holiday_Name':'Memorial Day'
},
{
'Holiday_Date_Time':'2019-01-01T08:00:00.000-08:00',
'Holiday_Name':"New Year's Day"
},
{
'Holiday_Date_Time':'2019-11-28T08:00:00.000-08:00',
'Holiday_Name':'Thanksgiving Day'
}
]
}, {
'Holiday_Calendar':'Holilday Calendar - Kansas',
'Holiday_Calendar_Group':[
{
'Holiday_Date_Time':'2019-12-25T08:00:00.000-08:00',
'Holiday_Name':'Christmas Day'
},
{
'Holiday_Date_Time':'2019-11-29T08:00:00.000-08:00',
'Holiday_Name':'Day After Thanksgiving'
},
{
'Holiday_Date_Time':'2019-07-04T08:00:00.000-07:00',
'Holiday_Name':'Independence Day'
},
{
'Holiday_Date_Time':'2019-09-02T08:00:00.000-07:00',
'Holiday_Name':'Labor Day'
},
{
'Holiday_Date_Time':'2019-05-27T08:00:00.000-07:00',
'Holiday_Name':'Memorial Day'
},
{
'Holiday_Date_Time':'2019-01-01T08:00:00.000-08:00',
'Holiday_Name':"New Year's Day"
},
{
'Holiday_Date_Time':'2019-11-28T08:00:00.000-08:00',
'Holiday_Name':'Thanksgiving Day'
}
]
}
]
from pandas.io.json import json_normalize
import pandas as pd
df = pd.DataFrame()
for index, row in enumerate(result):
temp_df = json_normalize(row['Holiday_Calendar_Group'])
temp_df['Holiday_Calendar'] = row['Holiday_Calendar']
df = df.append(temp_df, sort=True).reset_index(drop=True)
輸出:
print (df.to_string())
Holiday_Calendar Holiday_Date_Time Holiday_Name
0 Holilday Calendar - Texas 2019-12-25T08:00:00.000-08:00 Christmas Day
1 Holilday Calendar - Texas 2019-07-04T08:00:00.000-07:00 Independence Day
2 Holilday Calendar - Texas 2019-09-02T08:00:00.000-07:00 Labor Day
3 Holilday Calendar - Texas 2019-05-27T08:00:00.000-07:00 Memorial Day
4 Holilday Calendar - Texas 2019-01-01T08:00:00.000-08:00 New Year's Day
5 Holilday Calendar - Texas 2019-11-28T08:00:00.000-08:00 Thanksgiving Day
6 Holilday Calendar - Kansas 2019-12-25T08:00:00.000-08:00 Christmas Day
7 Holilday Calendar - Kansas 2019-11-29T08:00:00.000-08:00 Day After Thanksgiving
8 Holilday Calendar - Kansas 2019-07-04T08:00:00.000-07:00 Independence Day
9 Holilday Calendar - Kansas 2019-09-02T08:00:00.000-07:00 Labor Day
10 Holilday Calendar - Kansas 2019-05-27T08:00:00.000-07:00 Memorial Day
11 Holilday Calendar - Kansas 2019-01-01T08:00:00.000-08:00 New Year's Day
12 Holilday Calendar - Kansas 2019-11-28T08:00:00.000-08:00 Thanksgiving Day
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.