Pandas экспорт и импорт разных словарей - PullRequest
1 голос
/ 06 февраля 2020

У меня есть две функции для экспорта и импорта диктов в и из csv, потому что у меня много разных словарей.

def export_dict(dict, filename):
    df = pd.DataFrame.from_dict(dict, orient="index")
    df.to_csv(CSV_PATH + filename)


def import_dict(filename):
    df = pd.read_csv(filename, header = None, keep_default_na=False)
    d = df.to_dict('split')
    d = dict(d["data"])
    return d

Диктофоны выглядят так:

d1 = {'123456': 8, '654321': 90, '123654': 157483}
d2 = {'ouwejfw': [4], 'uwlfhsn0': [3, 1, 89], 'afwefwe': [3, 4], 'a3rz0dsd': []}

Так что в основном первый случай является простым, где строка - это ключ (но это может быть int), а число - это значение. Во втором случае строка является ключом, а список значений разных размеров - значением. Первый я могу писать и читать без проблем. Но второй ломает все из-за списков разного размера. Я не могу сократить их, и я не могу использовать слишком много места, добавляя столбцы, потому что у меня много миллионов данных.

Может ли кто-нибудь мне помочь, что я могу сделать, чтобы правильно читать / писать оба текста? Спасибо!

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете рассматривать значения словаря как один элемент при сохранении в фрейме данных

import pandas as pd

def export_dict(dict, filename):
    df = pd.DataFrame()
    df["keys"] = d2.keys()
    df["values"] = d2.values()
    df.to_csv(CSV_PATH + filename)

d2 = {'ouwejfw': [4], 'uwlfhsn0': [3, 1, 89], 'afwefwe': [3, 4], 'a3rz0dsd': []}
export_dict(d2, "your_filename.csv")
...