Python скрипт для записи списка dict с несколькими значениями в несколько файлов - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть список диктов, как показано ниже.Я хочу написать dicts для нескольких файлов Excel или CSV в зависимости от ключей.если ключи одинаковые, они должны быть в одном файле.

my_list_of_dicts:

[{'john': ['0', '100']}, {'john': ['4', '101']}, {'john': ['0', '102']}, {'mary': ['2', '100']}, {'mary': ['5', '101']}, {'mary': ['4', '102']}, {'mary': ['1', '103']}, {'sam': ['4', '100']}, {'sam': ['3', '101']}, {'sam': ['12', '102']}, {'paul': ['2', '100']}, {'hay': ['2', '100']}, {'hay': ['1', '102']}, {'mercy': ['4', '101']}]

Мой код пока:

x = []
i = 0
for ii, line in enumerate(my_list_of_dicts):
    with open("out_%s.csv" % i, 'w+') as f:
        if line.keys() not in x:
            x.append(line.keys())
            i += 1
            pd.DataFrame.from_dict(data=line, orient='index').to_csv(f, header=False)
        else:
            pd.DataFrame.from_dict(data=line, orient='index').to_csv(f, header=False)

Результат:

Я получаю нужное количество файлов, но не содержимое.

Ожидание:

Я ожидаю получить файлы, соответствующие каждому ключу, т. Е. (Джон, Мэри, Сэм, Джей, Пол,сено и милосердие) с содержанием ниже.Используя Джона в качестве примера:

john, 0, 100 
john, 4, 101
john, 0, 102

Я не уверен, как поступить или если мне даже нужно перечислить.Спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

Лучшей идеей является объединение ваших данных в один фрейм данных, а затем итерация объекта groupby:

# construct dataframe from list of dictionaries
df = pd.DataFrame([[k, *v] for dct in L for k, v in dct.items()])
df[[1, 2]] = df[[1, 2]].apply(pd.to_numeric)

# iterate groupby object and export to separate CSV files
for key, df_key in df.groupby(0):
    df_key.to_csv(f'{key}.csv', index=False, header=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...