我有两个由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"}]
现在我有两个问题:
j = {"nodes":nodes, "links":links}
使用方括号 j
似乎不是将其写入文件的好方法。我无法使用{'nodes':
'[{"id":"Michael Scott"}, {"id":Jim Halpert"}]',
'links':
'[{"source":"Michael Scott", "target":"Jim Halpert", "value":1}]'
}
的内置路径,因为我必须将已经JSONified的数据帧分开。我试过这个:
to_json
这导致最终文件中的双重编码格式,只是使用额外的双引号而不是单引号。
问题:在组合两个已经JSON化的Pandas数据帧时,如何避免对生成的JSON文件进行双重编码?我如何写出结果文件?
感谢您提供的任何见解!
答案 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}]}
您可能会在pd.to_json()
之前如何实现链接和节点的实例化于连