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?