python - JSON 格式的字符串到 pandas 数据帧

标签 python json apriori

好吧,我整个下午都在用头撞墙。我知道有很多类似的帖子,但我不断收到错误,并且可能犯了一个愚蠢的错误。

我正在使用此处找到的apyori包进行一些交易篮分析:https://pypi.python.org/pypi/apyori/1.1.1

dump_as_json() 方法似乎为每个可能的篮子输出 RelationRecords 字典。

我想将这些 json 格式的字典放入一个 pandas 数据帧中,但在尝试使用 pd.read_json() 时遇到了不同的错误。

这是我的代码:

import apyori, shutil, os
from apyori import apriori
from apyori import dump_as_json
import pandas as pd
import json

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO

transactions = [
    ['Jersey','Magnet'],
    ['T-Shirt','Cap'],
    ['Magnet','T-Shirt'],
    ['Jersey', 'Pin'],
    ['T-Shirt','Cap']
]
results = list(apriori(transactions))
results_df = pd.DataFrame()
for RelationRecord in results:
    dump_as_json(RelationRecord,output_file)
print output_file.getvalue()
json_file = json.dumps(output_file.getvalue())
print json_file


print data_df.head()

有什么想法如何将 output_file 中存储的 json 格式字典放入 pandas 数据帧中吗?

最佳答案

我建议阅读 StackOverflow 关于生成 Minimal, Complete, and Verifiable example 的指南。 。此外,诸如“我不断收到错误”之类的陈述也没有多大帮助。也就是说,我查看了您的代码和这个 apyori 包的源代码。撇开拼写错误不谈,问题所在似乎是这里:

for RelationRecord in results:
    dump_as_json(RelationRecord,output_file)

您正在创建一个每行一个对象的 JSON 文件(我认为这有时称为 LSON 或 Line-JSON。)作为一个完整的文档,它不是有效的 JSON。您可以尝试将其保留为同类字典列表或其他一些 pd.DataFrame 友好结构。

output = []
for RelationRecord in results:
    o = StringIO()
    dump_as_json(RelationRecord, o)
    output.append(json.loads(o.getvalue()))
data_df = pd.DataFrame(output)

关于python - JSON 格式的字符串到 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514984/

相关文章:

python - 如何找到 tarball 的一致散列

javascript - 如何使用 jQuery 增加索引值

python - 从 Frozenset/Alternatives 到 Frozenset 检索元素

algorithm - 先验算法

performance - 频繁项集最佳算法和库

python - twisted reactor.spawnProcess 在 Windows 上获取无缓冲的标准输出

python - 使用 PyQt 在图像上画线

python - 神经网络中的线性函数正在产生巨大的输出值

c# - 使用 JSON 序列化程序将对象数组序列化为一个对象,并为 C# 中的每个对象命名属性

json - jQuery Ajax JSONP Post 调用 WCF 服务 moSTLY 收到 400 错误请求