2017-05-23 3 views
1

何らかの理由でpandas to_json関数がデータフレームのインデックスを文字列に変換しています。これを避ける方法はありますか?パンダ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

代わりに、orient='records'を使用します。

df.to_json(orient='records') 

json

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

キーはintことができないようにそして

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

出力を与えます。より良い説明はhereです。

一つの可能​​な解決策がある - to_jsonで使用するパラメータ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 
関連する問題