如果有人能提出更多Pythonic方式处理以下问题,我将非常感激:
问题: 我有一个json对象解析成python对象(dict)。我遇到的问题是json对象结构是一个字典列表(dict1)。这些词典包含字典(dict2)。
我想解析dict1的所有内容,并在dict1中组合dict2的内容。
此后,我想把它解析成熊猫。
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数据帧中使用它,我需要解压缩我的元组中的两个列表。 - > 有一种简单的方法可以在元组中解压缩列表吗?
是否有更好,更优雅/ Pythonic的方法来解决这个问题?
谢谢, 12avi
答案 0 :(得分:0)
一种方式(使用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))
另一种方法是使用list comprehension和argument unpacking:
df = pd.DataFrame([[a,b,*c,*d] for a,b,c,d in Unpacked_Data])
但是,如果打包列表的长度不同,则第二种方法可能无法按照您希望的方式排列。