结合两只熊猫时避免使用双重编码JSON' to_json电话

时间:2017-06-12 14:05:53

标签: python json pandas dataframe

我有两个由Pandas JSON认证的数据帧(节点和链接)。 to_json致电:

Route::resource('User', 'UserController')->applyPolicy()

这些调用的输出似乎符合预期:

链接:

links = links.to_json(orient='records')
nodes = nodes.to_json(orient='records')

节点:

[{"source":"Michael Scott", "target":"Jim Halpert", "value":1}]

然后我将这些JSON dicts组合成一个对象(用于d3强制导向图):

[{"id":"Michael Scott"}, {"id":Jim Halpert"}]

现在我有两个问题:

  1. JSON对象j = {"nodes":nodes, "links":links} 使用方括号
  2. 附近的单引号进行双重编码

    j

    1. 似乎不是将其写入文件的好方法。我无法使用{'nodes': '[{"id":"Michael Scott"}, {"id":Jim Halpert"}]', 'links': '[{"source":"Michael Scott", "target":"Jim Halpert", "value":1}]' }的内置路径,因为我必须将已经JSONified的数据帧分开。我试过这个:

      to_json

    2. 这导致最终文件中的双重编码格式,只是使用额外的双引号而不是单引号。

      问题:在组合两个已经JSON化的Pandas数据帧时,如何避免对生成的JSON文件进行双重编码?我如何写出结果文件?

      感谢您提供的任何见解!

2 个答案:

答案 0 :(得分:1)

Pandas方法to_json()转换为JSON 字符串,这是添加到外部字典j的值。

因此,此代码将DatFrame序列化为string

links = links.to_json(orient='records')

如果您检查links的类型,那么它将是str

type(links)
<type 'str'>

请尝试使用to_dict()

答案 1 :(得分:0)

也许您可以向我们展示更多代码。 我试图重现你的问题,但我没有遇到与你相同的问题。 我的代码:

import json
links = [{"source":"Michael Scott", "target":"Jim Halpert", "value":1}]
nodes = [{"id":"Michael Scott"}, {"id":"Jim Halpert"}]
j = {"nodes":nodes, "links":links}
print j

我的输出:

{'nodes': [{'id': 'Michael Scott'}, {'id': 'Jim Halpert'}], 'links': [{'source': 'Michael Scott', 'target': 'Jim Halpert', 'value': 1}]}

我还生成了一个json文件:enter image description here

您可能会在pd.to_json()

之前如何实现链接和节点的实例化

于连