2017-01-08 2 views
1

Я хочу сохранить мой вывод Python сценария в формате JSon ниже:Python DataFrames к JSon

[{ 
    "ids": "1", 
    "result1": ["1","2","3","4"], 
    "result2": ["4","5","6","1"] 
}, 
{ 
    "ids": "2", 
    "result1": ["3","4"], 
    "result2": ["4","5","6","1"] 
}] 

Мой код выглядит следующим образом

for i in df.id.unique(): 
    ids = i 
    results1 = someFunction(i) 
    results2 = someFunction2(i) 
    df_result_int = ["ids : %s" %ids , "results1 : %s" %results1, "results2 : %s" %results2] 
    df_results.append(df_result_int) 

jsonData = json.dumps(df_results) 

with open('JSONData.json', 'w') as f: 
    json.dump(jsonData, f) 

SomeFunction() и someFunction2() возвращает список ,

Заранее спасибо.

ответ

0

Вы не должны вручную преобразовывать свои списки в строку, json.dumps делает это за вас. Вместо этого используйте словари. Вот пример:

df_results = [] 
results1 = [1,1] 
results2 = [2,2] 
df_result_int = {"ids" : 1, "results1" : results1, "results2" : results2} 
df_results.append(df_result_int) 

json.dumps(df_results) 

Это приведет:

[{"results2": [2, 2], "ids": 1, "results1": [1, 1]}] 
0

Существует метод для панд dataframes, что позволяет сбросить dataframe непосредственно в файл JSON. Вот ссылка на документацию:
to_json
Вы можете использовать что-то вроде

df.reset_index().to_json(orient='records')  

где ДФ является dataframe, на котором вы сделали какие-то манипуляции, прежде чем (например, функции, которые вы хотите применить, и т.д. .), и это зависит от информации, которую вы хотите в json-файле и как устроен.

+0

Чтобы получить ответ, я попытался его использовать, но проблема reset_index вызывает проблему. – Amy21

+0

Вы можете просто удалить часть 'reset_index()' и просто иметь 'df.to_json (orient = 'records')'. Но, вероятно, другой ответ будет служить вашему делу быстрее без слишком большого количества изменений кода, который у вас уже есть, поскольку мы не знаем формат данных ... – fedepad

Смежные вопросы