Python 如何将此系列转换为嵌套的json字符串?
我有一个叫做Python 如何将此系列转换为嵌套的json字符串?,python,json,pandas,series,Python,Json,Pandas,Series,我有一个叫做ss的系列对象: In [137]: d Out[137]: {'-1': 24.0, '-2': 0.0, '-3': 0.0} In [138]: ss = pd.Series(d) In [139]: ss Out[139]: -1 24.0 -2 0.0 -3 0.0 dtype: float64 如何获得以下形状的json字符串 [ { "y": 24.0, "x": -1 }, { "y": 0.0, "x": -2
ss
的系列对象:
In [137]: d
Out[137]: {'-1': 24.0, '-2': 0.0, '-3': 0.0}
In [138]: ss = pd.Series(d)
In [139]: ss
Out[139]:
-1 24.0
-2 0.0
-3 0.0
dtype: float64
如何获得以下形状的json字符串
[
{
"y": 24.0,
"x": -1
},
{
"y": 0.0,
"x": -2
},
{
"y": 0.0,
"x": -3
}
]
我试过以下方法,但不是预期的
In [142]: result = json.loads(ss.to_json())
In [143]: result
Out[143]: {u'-1': 24.0, u'-2': 0.0, u'-3': 0.0}
编辑:根据Anton vBR的评论,我正在尝试使用数据帧:
In [151]: dd = {'-1': [24.0], '-2': [0.0], '-3': [0.0]}
In [153]: df = pd.DataFrame(dd)
In [154]: df
Out[154]:
-1 -2 -3
0 24.0 0.0 0.0
In [156]: df.to_dict()
Out[156]: {'-1': {0: 24.0}, '-2': {0: 0.0}, '-3': {0: 0.0}}
In [157]: df.to_json()
Out[157]: '{"-1":{"0":24.0},"-2":{"0":0.0},"-3":{"0":0.0}}'
但是它仍然不符合我的需要。好的,这里的想法是通过
items()
函数访问字典键和值,直接转到数据帧
让我们调用列x
和y
,以获得所需的输出
更新了json输出的
import json
import pandas as pd
d = {'-1': 24.0, '-2': 0.0, '-3': 0.0}
df = pd.DataFrame(list(d.items()), columns=['x','y'])
df['x'] = pd.to_numeric(df['x'])
dout = json.dumps(df.to_dict(orient='records'), indent=2)
# "[{"y": 0.0, "x": -2.0}, {"y": 0.0, "x": -3.0}, {"y": 24.0, "x": -1.0}]" with indent None
print(dout)
返回
[
{
"y": 0.0,
"x": -2.0
},
{
"y": 0.0,
"x": -3.0
},
{
"y": 24.0,
"x": -1.0
}
]
你可以这样做:
import json
import pandas as pd
d = {'-1': 24.0, '-2': 0.0, '-3': 0.0}
ss = pd.Series(d)
result = json.dumps([{"x": k, "y": v} for k, v in ss.items()])
print(result)
输出
[{"x": "-1", "y": 24.0}, {"x": "-2", "y": 0.0}, {"x": "-3", "y": 0.0}]
首先将序列转换为数据帧,然后对数据帧使用内置方法:
df = pd.DataFrame(list(d.items()), columns=['x','y']).to_json(orient='records')
如果你想要的输出是一个字典列表,为什么要转换成一个系列呢?