将 pandas 数据帧转换为 json 对象 - pandas
Posted
技术标签:
【中文标题】将 pandas 数据帧转换为 json 对象 - pandas【英文标题】:convert pandas dataframe to json object - pandas 【发布时间】:2018-10-27 08:01:51 【问题描述】:我正在使用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]
【问题讨论】:
你能添加一些数据样本吗? 你要的不是“json对象”而是字典,使用df.to_dict()
【参考方案1】:
我认为需要创建字典然后转换为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 - 嗯,orient='records'
返回dict
的列表,所以追加应该可以工作。您可以添加数据输入示例和您的代码吗?因为我无法模拟你的问题。谢谢。
很抱歉它有效,但我在 json 前后得到单引号。例如:['["id":1,"param":"data"]'] 我在追加时不需要这些单引号。没有它如何插入数据?
这个'
是因为json
- text
。所以需要dictionary
来避免它。如果使用array.append(df1.to_dict(orient='records'))
它不起作用?
酷!我得到了它。 df1 = df1.fillna('') 已修复 :)【参考方案2】:
这对我有用:
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 string
:
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]
【讨论】:
以上是关于将 pandas 数据帧转换为 json 对象 - pandas的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python3 将 Bytes 对象转换为 Pandas 数据帧会产生一个空数据帧。为啥?
从 Pandas 数据帧转换为 TensorFlow 张量对象