在组合两个Pandas的to\u JSON调用时避免双重编码JSON

2024-09-27 17:50:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧(节点和链接),它们由Pandas的to_json调用json化:

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

这些调用的输出似乎与预期一致:

链接:

^{pr2}$

节点:

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

然后,我将这些JSON dicts组合成一个对象(在d3 force-directed图中使用):

j = {"nodes":nodes, "links":links}

现在我有两个问题:

  1. JSON对象j是用方括号括起来的单引号进行双重编码的

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

  1. 似乎没有一个很好的方法来将此写入文件。我不能使用to_json的内置路径,因为我必须分离已经JSONified的数据帧。我试过了:

    jsonOut = open('test.json', 'w') jsonOut.write(json.dumps(j))

这也会导致最终文件中的双编码格式,只是使用了额外的双引号而不是单引号。在

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

谢谢你的任何见解!在


Tags: 文件to数据idjson编码节点链接
2条回答

Pandas方法^{}转换为一个JSONstring,这是添加到外部字典j的值。在

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

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

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

^{pr2}$

请尝试改用^{}。在

也许你可以给我们看更多的代码。 我试图重现你的问题,但我没有遇到和你一样的问题。 我的代码:

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

我的输出:

^{pr2}$

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

你的问题可能是如何在pd.to_json()

朱利安

相关问题 更多 >

    热门问题