如果有人能提出一种更为毕不过的方法来处理以下问题,我将不胜感激:
问题:我将json对象解析为python ()。我遇到的问题是json对象结构是字典列表(Dict1)。这些字典包含一本字典(Dict2)。
我想解析dict1的所有内容,并将dict2的内容合并到dict1中。
之后,我想把它解析成熊猫。
json_object = {
"data": [{
"complete": "true",
"data_two": {
"a": "5",
"b": "6",
"c": "6",
"d": "8"
},
"time": "2016-10-17",
"End_number": 2
},
{
"complete": "true",
"data_two": {
"a": "11",
"b": "21",
"c": "31",
"d": "41"
},
"time": "2016-10-17",
"End_number": 1
}
],
"Location": "DE",
"End Zone": 5
}
我的尝试:
dataList = json_object['data']
Unpacked_Data = [(d['time'],d['End_number'], d['data_two'].keys(),d['data_two'].values()) for d in dataList]Unpacked_Data是现在包含的元组列表(时间、end_number、键列表、值列表)。
要在Pandas dataframe中使用这一点,我需要在我的tuple中解压这两个列表。->有一种简单的方法在元组中打开列表吗?
是否有更好和更优雅/毕达通的方法来处理这个问题?
谢谢,12
发布于 2017-10-26 09:09:36
一种方法(使用pandas)是首先将所有内容放入数据框架中,然后将pd.Series应用于其中:
df = pd.DataFrame(Unpacked_Data)
unpacked0 = df[2].apply(lambda x: pd.Series(list(x)))
unpacked1 = df[3].apply(lambda x: pd.Series(list(x)))
pd.concat((df[[0,1]],unpacked0,unpacked1))另一种方法是使用列表理解和理解力:
df = pd.DataFrame([[a,b,*c,*d] for a,b,c,d in Unpacked_Data])但是,如果打包列表长度不相同,则第二种方法可能不会按照您希望的方式排列。
https://stackoverflow.com/questions/46950078
复制相似问题