Pandas to_json将索引转换为字符串

时间:2017-05-23 05:56:15

标签: python pandas

pandas to_json函数由于某种原因将数据帧的索引转换为字符串。有没有办法避免这种情况?

>>> import pandas as pd
>>> df = pd.DataFrame({"a" : [1,2,3], "b" : [2,3,4]})
>>> df.to_json(orient = "index")
'{"0":{"a":1,"b":2},"1":{"a":2,"b":3},"2":{"a":3,"b":4}}'
>>> import json
>>> json.loads(df.to_json(orient="index"))
{'2': {'a': 3, 'b': 4}, '1': {'a': 2, 'b': 3}, '0': {'a': 1, 'b': 2}}
>>> 

2 个答案:

答案 0 :(得分:2)

一种方法是使用orient='records'代替。

df.to_json(orient='records')

然后

json.loads(df.to_json(orient="records"))

将输出

[{'a': 1, 'b': 2}, {'a': 2, 'b': 3}, {'a': 3, 'b': 4}]

答案 1 :(得分:2)

json中的密钥不能为int。更好的是解释here

有一种可能的解决方案 - 如果需要将索引值存储为split,请在to_json中使用参数int

df = pd.DataFrame({"a" : [1,2,3], "b" : [2,3,4]}, index=[100,200,300])
print (df)
     a  b
100  1  2
200  2  3
300  3  4

a = df.to_json(orient = "split")
print (a)
{"columns":["a","b"],"index":[100,200,300],"data":[[1,2],[2,3],[3,4]]}

print (pd.read_json(a, orient='split'))
     a  b
100  1  2
200  2  3
300  3  4