Создание серии переменных из CSV в Python? - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь создать серию словарей из CSV, которые я хочу импортировать, но я не уверен, что это лучший способ сделать это.

Я использовал RatingFactors = os.listdir(RatingDirectory) и

CSVLocations = [] for factor in RatingFactors: CSVLocations.append(RatingDirectory + factor)

для создания списка CSV, эти CSV содержат то, что по сути является словарем FactorName | Значение коэффициента, то 1 | 5, 2 | 3.5.

Я хочу создать словарь для каждого CSV, в идеале с именем на основе имени CSV. Тем не менее, я понимаю, что при циклическом изменении переменных считается плохим пытаться называть мои переменные внутри цикла.

Я пытался создать функцию генератора, используя df_from_each_file = (pd.read_csv(CSVs) for CSVs in CSVLocations)

и если я распечатаю генератор, используя for y in df_from_each_file: print(y), он выдаст мне каждый из фреймов данных, но я не знаю, как их разделить?

Как Pythonic способ сделать это?

Как выглядят файлы CSV после импорта

0         0  1.1
1         1  0.9
2         2  0.9
3         3  0.9
etc

Edit:

Попытка перефразировать мой вопрос.

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

Редактировать 2:

Я полагаю, что этот вопрос отличается от того, на который ссылается, поскольку он создает единый фрейм данных, содержащий все словари. Я хочу, чтобы все словари были отдельными, а не единым блоком. Я пытался использовать их ответ, прежде чем спрашивать об этом, и я не мог отделить их.

1 Ответ

0 голосов
/ 02 сентября 2018

Я думаю, нужно dict comprehension с basename для ключей:

import glob, os

files = glob.glob('files/*.csv')
sers={os.path.basename(f).split('.')[0]:pd.read_csv(f,index_col=[0]).squeeze() for f in files}

Если хотите один большой Series:

d = pd.concat(sers, ignore_index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...