2016-03-21 3 views
0

Я пытаюсь преобразовать данные pandasFrame в json.Dataframe с двумя индексами для json в pandas

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},... 

В идеале, dataframe:

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 сериализации") TypeError: 3208 не JSON serializable' –

+0

hmm странно, возможно, проверьте свои типы данных, убедитесь, что целочисленный столбец на самом деле 'int'? – maxymoo