Python Pandas to_json将索引转换为字符串

Python Pandas to_json将索引转换为字符串,python,pandas,Python,Pandas,出于某种原因,pandasto_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}}' >

出于某种原因,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}}
>>> 

一种方法是使用
orient='records'

df.to_json(orient='records')
然后

将输出为

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

json
中的键不能是
int
。最好解释一下

有一种可能的解决方案-如果需要,在中使用参数
split
,将索引值存储为
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
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