我有一组字典对象,其结构如下所示:
{'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(dictionary) 但性能非常糟糕,因为我有大约 200,000 个条目想要标准化。非常感谢对此的任何帮助。
最佳答案
您可以取消嵌套数据,然后构建数据框。以下是取消嵌套的方法。
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}
关于python - 如何访问嵌套字典键来制作 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35212209/