2016-02-04 72 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

這就是我正在尋找的東西。超級快速和優雅。 –