2016-03-21 10 views
0

パンダのdataFrameをjsonに変換しようとしています。パンダのjsonへの2つのインデックスを持つデータフレーム

y=pd.read_csv('testx.csv',encoding='utf-8') 
y.columns = ['i','city','language','words'] 
del y['i'] 
y = y.set_index(['city','language']) 
z=y.to_json(orient='index') 

私は引用符で[{で間違ったJSONを持っています。私は間違って何をしていますか?

{"["Moscow","Russian"]":{"words":3300000},"["Moscow","English"]":{"words":550000},"["Moscow","French"]":{"words":100000}," 
["London","English"]":{"words":9100000},"["London","Russian"]":{"words":150000},"["London","Spanish"]":{"words":90000},... 

は理想的には、データフレーム:

city   language   words  
Moscow   Russian   3300000 
Moscow   English   550000 
Moscow   French    100000 
London   English   9100000 
London   Russian   150000 
London   Spanish   90000 
... 

はこれに変換する必要があります:

[ 
    { 
    "city": "Moscow", 
    "language": { 
     "Russian": 3300000, 
     "English": 550000, 
     "French": 100000 
    } 
    }, 
    { 
    "city": "London", 
    "language": { 
     "English": 9100000, 
     "Russian": 150000, 
     "Spanish": 90000 
    } 
    } 
] 

答えて

0

あなたは明示的に出力を作るためにdictの内包表記を使用することをいとわないだろうか? json.dumpsを使用して、python dictからJSONに変換できます。残念ながら、to_jsonがサポートしている標準出力の外に、あなたの望むフォームがあります。

[{"city":i, 
    "language":{l:n 
     for l,n in zip(g['language'], g['words'])}} 
    for i,g in df.groupby('city')] 
[{'city': 'London', 
    'language': {'English': 9100000, 'Russian': 150000, 'Spanish': 90000}}, 
{'city': 'Moscow', 
    'language': {'English': 550000, 'French': 100000, 'Russian': 3300000}}] 
+0

ありがとうございます。残念ながら、私がやろうとしてエラーをjson.dumps持っ '輸入JSON json.dumps(dict_to_json_file)' エラー: 'TypeError例外上げる(+ "シリアライズJSONではありません")のrepr(O)を TypeError:3208はJSONのシリアル化可能ではない ' –

+0

奇妙なことに、データ型をチェックして、整数列が実際に' int'であることを確認しますか? – maxymoo

関連する問題