Запись фрейма данных в текстовый файл в виде словарей в кодировке JSON с помощью Pandas

#python #pandas

#python #pandas

Вопрос:

У меня есть большой текстовый файл, содержащий построчные словари в кодировке JSON.

 {"a": 10, "b": 11, "c": 12, "d": 13, "e": 14, "f": 15, "g": 16, "h": 17, "i": 18, "j": 19}
{"a": 20, "b": 21, "c": 22, "d": 23, "e": 24, "f": 25, "g": 26, "h": 27, "i": 28, "j": 29}
...
 

Я использую Pandas, потому что это позволяет мне легко переименовывать и переиндексировать ключи словаря.

 with open("my_dictionaries.txt") as f:
    my_dicts = [json.loads(line.strip()) for line in f]

df = pd.Dataframe(my_dicts)
df.rename(columns= ...)
df.reindex(columns= ...)
 

Теперь я хочу записать измененные словари обратно в текстовый файл, построчно, как в исходном примере. Я не хочу использовать pd.to_csv() , потому что мои данные имеют некоторые особенности, которые затрудняют использование CSV. Я экспериментировал с методами pd.to_dict() and pd.to_json() , но немного застрял.

Есть предложения?

Ответ №1:

Вы можете использовать это:

 import json

with open('output.txt', 'w') as f:
    for row in  df.to_dict('records'):
        f.write(json.dumps(row)   'n')
 

или:

 import json

with open('output.txt', 'w') as f:
    f.writelines([(json.dumps(r)   'n') for r in df.to_dict('records')])