Python - 如何将Pandas数据框转换为JSON对象?

11

我正在使用 df.to_json() 将数据框转换为 Json 格式。但是它给出的是一个 Json 字符串而不是一个对象。

如何获取 Json 对象?

此外,当我将这些数据添加到一个数组中时,它在 json 的前后添加了单引号,破坏了 json 结构。

如何导出为 Json 对象并正确地添加到数组中?

使用的代码:

a=[]
     array.append(df1.to_json(orient='records', lines=True)) 
     array.append(df2.to_json(orient='records', lines=True)) 

结果:

['{"test:"w","param":1}','{"test:"w2","param":2}]']

所需结果:

[{"test":"w","param":1},{"test":"w2","param":2}]

谢谢!


能否添加一些数据样本? - jezrael
1
你所要求的不是“json对象”,而是一个字典,使用df.to_dict() - ted
2个回答

28
我认为需要创建字典,然后将其转换为json
import json
d = df1.to_dict(orient='records')
j = json.dumps(d)

或者如果可能:

j = df1.to_json(orient='records')

当我试图将这个数据附加到一个数组中时,它会抛出这个错误:**AttributeError: 'dict' object has no attribute 'append'。代码:data.append(j)**。 - jason
这是我附加它时得到的结果。**[[{'test': 0, 'params': 0, 'data': 'test'}]]** 错误:**SyntaxError: JSON.parse: 在 JSON 数据的第 1 行第 4 列处需要属性名称或 '}'**。 - jason
我猜应该使用双引号而不是单引号! - jason
2
太棒了!我明白了。df1 = df1.fillna('') 已经修复 :) - jason
嗨,Jezreal。请你看一下这个链接 - https://stackoverflow.com/questions/50859373/convert-all-data-within-the-json-to-csv-using-pandas-or-python 能否帮忙转换JSON数据为CSV格式,使用Pandas或Python实现。非常感谢 :) - jason
显示剩余4条评论

3
这是我成功的方法:

以下是具体步骤:

import pandas as pd
import json

df = pd.DataFrame([{"test":"w","param":1},{"test":"w2","param":2}])
print(df)
    test  param
0     w      1
1    w2      2

现在我们将其转换为JSON字符串

d = df.to_json(orient='records')
print(d)
'[{"test":"w","param":1},{"test":"w2","param":2}]'

现在,我们将这个字符串解析成一个字典列表:

data = json.loads(d)
print(data)
[{'test': 'w', 'param': 1}, {'test': 'w2', 'param': 2}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接