我需要从web框架(例如Flask)返回单个Json对象中的几个数据帧和一个字符串。我的代码如下所示:
import pandas as pd
data1 = [['Alex',10],['Bob',12],['Clarke',13]]
df1 = pd.DataFrame(data1,columns=['Name','Age'])
data2 = [['Cycle',5],['Run',1],['Hike',7]]
df2 = pd.DataFrame(data1,columns=['Sport','Duration'])
test_value={}
test_value["df1"] = df1.to_json(orient='records')
test_value["df2"] = df2.to_json(orient='records')
print(json.dumps(test_value))
这将产生:
{"df1": "[{\"Name\":\"Alex\",\"Age\":10},{\"Name\":\"Bob\",\"Age\":12},{\"Name\":\"Clarke\",\"Age\":13}]", "df2": "[{\"Sport\":\"Alex\",\"Duration\":10},{\"Sport\":\"Bob\",\"Duration\":12},{\"Sport\":\"Clarke\",\"Duration\":13}]"}
因此,在“df1”和“df2”值的每个键前面都有许多转义字符。另一方面,如果我查看test_value
,我会得到:
{'df1': '[{"Name":"Alex","Age":10},{"Name":"Bob","Age":12},{"Name":"Clarke","Age":13}]', 'df2': '[{"Sport":"Alex","Duration":10},{"Sport":"Bob","Duration":12},{"Sport":"Clarke","Duration":13}]'}
这并不完全正确。我需要的是'df1'用双引号“df1”。除了在字符串中执行搜索和替换之外,实现这一点的方法是什么
我甚至试着自己创建字符串,这样做:
print('\{"test": "{0:.2f}"\}'.format(123))
但我得到了这个错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-266-1fa35152436c> in <module>
----> 1 print('\{"test": "{0:.2f}"\}'.format(123))
KeyError: '"test"'
我真的不明白:)。也就是说,必须有更好的方法来搜索/替换“df1”中的“df1”
想法
在} 将值转换为字典,然后通过
to_json
和json.dumps
函数中,存在到json的双重转换。解决方案是通过^{json.dumps
将值转换为json
一次:相关问题 更多 >
编程相关推荐