2016-02-04 49 views
0

我有一组字典对象的有看起来像这样的结构:如何访问嵌套的字典键做出大熊猫据帧

{'android_id': 'ds cgethcvwrzvbjezrzve', 
'app': 'hndbfhjdfhf bnmhjknuihklmmkbghjbtfgjnkluilnkkfbnjtkjzn', 
'app_ver': '10.0.1_0', 
'at': '2016-02-02 23:59:47', 
'birth_date': 1447896843, 
'browser': 'Android 4', 
'carrier': 'Comcast Cable', 
'city_name': 'Jacksonville', 
'country': 'us', 
'custom': {'Action': 'Click', 
'Campaign ID': '167713', 
'Creative ID': '113961', 
'Creative Type': 'Alert', 
'Schema Version - Client': '3', 
'Schema Version - Server': '1'}, 
'customer_ids': {'customer_id': '1234587612545464525441540341414'}, 
'data_conn': 'android_network_type_3', 
device_new': False, 
} 

我的问题是。如何访问嵌套键以在Pandas DataFrame中生成列?我从pandas.io.json中导入了json_normalize。 和尝试,json_normalize(字典),但表现很糟糕,因为我有大约200,000条我想要规范化。任何帮助,这是非常感谢。

+0

输出有什么表现,如果你只是通过数据结构,循环相对于时间?假如你应用了如下的东西:'用于输入数据: 如果type(data [entry])是字典: #对数据[entry]做某事' –

回答

1

您可以取消嵌套数据然后构造您的数据框。以下是如何取消嵌套它。

df = {'android_id': 'ds cgethcvwrzvbjezrzve', 
     'app': 'hndbfhjdfhf bnmhjknuihklmmkbghjbtfgjnkluilnkkfbnjtkjzn', 
     'app_ver': '10.0.1_0', 
     'at': '2016-02-02 23:59:47', 
     'birth_date': 1447896843, 
     'browser': 'Android 4', 
     'carrier': 'Comcast Cable', 
     'city_name': 'Jacksonville', 
     'country': 'us', 
     'custom': {'Action': 'Click', 
     'Campaign ID': '167713', 
     'Creative ID': '113961', 
     'Creative Type': 'Alert', 
     'Schema Version - Client': '3', 
     'Schema Version - Server': '1'}, 
     'customer_ids': {'customer_id': '1234587612545464525441540341414'}, 
     'data_conn': 'android_network_type_3', 
     'device_new': False, 
     } 

sub_df1 = df.pop('custom') 
sub_df2 = df.pop('customer_ids') 

df.update(sub_df1) 
df.update(sub_df2) 


# you can define a function to do this 
def un_nest(df): 
    sub_df1 = df.pop('custom') 
    sub_df2 = df.pop('customer_ids') 

    df.update(sub_df1) 
    df.update(sub_df2) 
    return df 

这给像

{'Action': 'Click', 
'Campaign ID': '167713', 
'Creative ID': '113961', 
'Creative Type': 'Alert', 
'Schema Version - Client': '3', 
'Schema Version - Server': '1', 
'android_id': 'ds cgethcvwrzvbjezrzve', 
'app': 'hndbfhjdfhf bnmhjknuihklmmkbghjbtfgjnkluilnkkfbnjtkjzn', 
'app_ver': '10.0.1_0', 
'at': '2016-02-02 23:59:47', 
'birth_date': 1447896843, 
'browser': 'Android 4', 
'carrier': 'Comcast Cable', 
'city_name': 'Jacksonville', 
'country': 'us', 
'customer_id': '1234587612545464525441540341414', 
'data_conn': 'android_network_type_3', 
'device_new': False} 
+0

这就是我正在寻找的东西。超级快速和优雅。 –