2016-03-21 24 views
0

Pandaların dataFrame'i json'a dönüştürmeye çalışıyorum.Pandalarda iki dizin içeren bir veri çerçevesi

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') 

ben tırnak içinde [ ve { ile yanlış json var. Neyi yanlış yapıyorum?

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

İdeal dataframe:

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

bu dönüştürülmesi gerekir:

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

cevap

0

açık bir şekilde çıkışını zanaat dict anlama kullanmaya razı olur? Daha sonra python dict'dan JSON'a dönüştürmek için json.dumps'u kullanabilirsiniz. İstediğiniz form maalesef to_json'un desteklediği standart çıktıların dışında.

[{"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

Teşekkür ederiz. Maalesef, benim yapacak çalışırken bir hatayla json.dumps var 'ithalat json json.dumps (dict_to_json_file)' hatası: 'TypeError yükseltmek (+ "seri hale JSON değil") repr (o) TypeError: 3208 JSON serializable' değil –

+0

hmm garip, belki detatypes kontrol edin, tamsayı sütun aslında 'int' emin olur mu? – maxymoo

İlgili konular