Запись имени файла с данными в одном кадре Python - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть датафрейм длины (141,2) с повторением года и месяца, которые я извлек из файлов в папке, которая выглядит просто так:

Year          Month
2017            1
2017            1
2017            1
2017            1
2017            1
2017            1
2017            1
.
.

Каждый извлеченный из меня файл содержит около (20000, 6) строк, и я хочу повторить Год и Месяц для каждого из файлов.

Я беру список файлов из каталога, чтобы убрать год и месяцы, например:

path = os.path.join(os.getcwd(),'C:\\.....')
files = [os.path.join(path,i) for i in os.listdir(path) if os.path.isfile(os.path.join(path,i))]

А потом из списка files Я просто перебираю каждый файл как:

for file in files:
    df['Year'] = os.path.split(file)[1]
    df['Year'] = df['Year'].map(lambda x: str(x)[:-6])

Как я могу просто записать весь файл на фрейм данных и соединить эти даты, которые я повторял, во всю длину файла?

Т.е.: сделать (141,2) фрейм данных просто добавленным и стать (20000,2) фреймом?

1 Ответ

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

Dask может легко построить фрейм данных из глобуса файлов с подстановочным знаком пути, например, "./*.csv", но это может быть излишним для вашей проблемы.

Другой способ - использовать concat.

df = pd.concat([pd.read_csv(f, ...) for f in files, ignore_index=True])

Edit:

Отмена этого для выполнения вашего map в основном будет выглядеть так:

df = []
for file in files:
    tdf = pd.DataFrame()
    tdf['Year'] = os.path.split(file)[1]
    df.append(tdf['Year'].map(lambda x: str(x)[:-6]))
 df = pd.concat(df, ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...