Как сохранить все выходы в файл JSON с Python - PullRequest
0 голосов
/ 17 июня 2019

Я хочу сохранить свои выводы в файл json. У меня есть фрейм данных со 100 строками и 20 столбцами элементов с одним именем столбца ID В какой-то части моего кода я определяю функцию

def function1(dataframe, ID):
    df_sum = dataframe.sum()
    df_sum = df_sum .sort_values(ascending=False)
    df_sum = pd.DataFrame(df_sum , columns=['num_%s'%ID])
    result_sum = df_sum .to_json(orient='columns')

    return result_sum 

Затем мой код следует с

for num in list(dataframe.['ID'].values):
   ...some code lines, to drop and merge columns, which create the...
   ...dataframe df_aux
   values = function1(df_aux, ID)
   print(values) 

Выходные данные (num в списке [0,1, ..., 99] идентификаторов)

{"num_1":{"item1":4}}
{"num_2":{"item19":6,"item20":4,"item18":4}}
...
{"num_99":{"item18":5,"item21":4,"item20":1}}

Теперь я добавляю функцию дампа json следующим образом

for num in list(dataframe.['ID'].values):
   ...some code lines, to drop and merge columns, which create the...
   ...dataframe df_aux
   values = function1(df_aux, ID)
   print(values) 

with open('data.json', 'w') as outfile:
   json.dump(values, outfile)

Но предыдущий код возвращает только последний результат. Когда я открываю файл data.json, он появляется только "{"num_99":{"item18":5,"item21":4,"item20":1}}"

И Мне нужно сохранить все значения в файле json . Я новичок в питоне. Любая подсказка будет оценена. Спасибо!

1 Ответ

0 голосов
/ 17 июня 2019

Вы получаете только последнюю строку, потому что вы перезаписываете значение на каждой итерации цикла for.

Что вы можете сделать, это объявить массив с именем values и добавить каждое значение. Примерно так:

values = []
for num in list(dataframe.['ID'].values):
   # some code lines, to drop and merge columns, which create the
   # dataframe df_aux
   value.append( function1(df_aux, ID) )

with open('data.json', 'w') as outfile:
   json.dump(values, outfile)
...