JSON字典到Python中的Pandas DataFrame

Posted

技术标签:

【中文标题】JSON字典到Python中的Pandas DataFrame【英文标题】:JSON dictionaries to Pandas DataFrame in Python 【发布时间】:2014-11-02 06:03:31 【问题描述】:

我从 API 服务获取 JSON 数据,我想使用 DataFrame 将数据输出到 CSV。

因此,我正在尝试将包含大约 100.000 个字典和大约 100 个键值对的字典列表转换为 Pandas DataFrame。

我正在使用以下代码,但速度非常慢:

try:
    # Convert each JSON data event to a Pandas DataFrame
    df_i = []
    for d in data:
        df_i.append( json_normalize(d) )

    # Concatenate all DataFrames into a single one
    df = concat(df_i, axis=0)

except AttributeError:
    print "Error: Expected a list of dictionaries to parse JSON data"

有人知道更好更快的方法吗?

【问题讨论】:

熊猫可以直接读取json:pandas.pydata.org/pandas-docs/stable/generated/… 【参考方案1】:

有一个whole section in the io docs 直接使用pd.read_json 读取json(作为字符串或文件)。

你应该能够做这样的事情:

pd.concat((pd.read_json(d) for d in data), axis=0)

这通常比创建临时字典要快得多。

【讨论】:

谢谢。鉴于我拥有的 json 格式是嵌套的,它没有被 read_json() 正确解析,给我一个 TypeError。但是,我将您的表单与 json_normalize():df = concat((json_normalize(d) for d in data), axis=0)【参考方案2】:

以下示例创建于 pandas.io.json.json_normalize 文档(链接:https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.io.json.json_normalize.html):

>>> from pandas.io.json import json_normalize
>>> data = ['id': 1, 'name': 'first': 'Coleen', 'last': 'Volk',
        'name': 'given': 'Mose', 'family': 'Regner',
        'id': 2, 'name': 'Faye Raker']
>>> json_normalize(data)
   id        name name.family name.first name.given name.last
0  1.0         NaN         NaN     Coleen        NaN      Volk
1  NaN         NaN      Regner        NaN       Mose       NaN
2  2.0  Faye Raker         NaN        NaN        NaN       NaN

【讨论】:

以上是关于JSON字典到Python中的Pandas DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 时间戳字符串转换为 pandas 数据框中的 python 日期

将 pandas.DataFrame 转换为 Python 中的字典列表

Python Flatten 用 Pandas 将嵌套字典 JSON 相乘

如何使用 python 或 pandas 根据包含字典列表的列过滤 DataFrame?

遍历 CSV 的每一行并使用 Python-Pandas 写入文件夹中的单个 JSON 文件

如何将字典附加到熊猫数据框?