python - 如何访问嵌套字典键来制作 Pandas DataFrame

标签 python pandas

我有一组字典对象,其结构如下所示:

{'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/

相关文章:

python - 两个排序数组,2个元素的总和等于某个数

python - 如何获取多索引数据帧与引用值的偏差

python - 如何对 pandas DataFrame 进行分组和索引以获得所需的箱形图

python - 在 python 中使用 pandas 从嵌套结构中构建数据框

python - Matplotlib - MatplotlibDeprecationWarning

python - 使用 go.Bar() 时如何消除堆叠条之间的水平间隙?

python - CLI 似乎忽略了我的功能并转到另一个! (Python)

python - 在 Pandas 0.23+ 中删除空列

python - Pandas 自定义 aggfunc 返回字符串限制字符数

python - 我们可以在 Hadoop Streaming 中级联多个 MapReduce 作业吗(lang : Python)