Добавить дату в список фреймов данных, извлекая ее из имени файла - PullRequest
1 голос
/ 16 июня 2020

У меня есть список из нескольких фреймов данных dfs.

Фреймы данных берутся из файлов, в названии которых есть даты. Например. Имя файлаГГГГММДД.xlsx

files = [str(file) for file in Path(/dir)]
dfs = [pd.read_excel(file, header=1)] for file in files]

Я могу извлечь дату из имен файлов:

date_extract = re.search('[0-9]{8}',files[0...20])
date = datetime.datetime.strptime(date_extract[0...20], '%Y%m%d').date()

Но как я могу назначить каждому df соответствующую дату (добавив столбец «Дата»)?

1 Ответ

2 голосов
/ 16 июня 2020

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

import re
from pathlib import Path
dfs = {
    re.search('(\d{4}.*).xlsx',f.name).group(1): pd.read_excel(f,header=1)
    for f in Path(
        /dir
    ).glob("*.xlsx")
}

print(pd.concat(dfs))

  Unnamed: 0    e    f    c    d
20200610 0            0  0.0  0.0  NaN  NaN
         1            1  0.0  0.0  NaN  NaN
         2            2  0.0  0.0  NaN  NaN
         3            3  0.0  0.0  NaN  NaN
         4            4  1.0  0.0  NaN  NaN
         5            5  0.0  1.0  NaN  NaN
         6            6  0.0  0.0  NaN  NaN
         7            7  0.0  0.0  NaN  NaN
         8            8  0.0  0.0  NaN  NaN
         9            9  0.0  0.0  NaN  NaN
         10          10  0.0  0.0  NaN  NaN
         11          11  0.0  0.0  NaN  NaN
         12          12  0.0  0.0  NaN  NaN
         13          13  0.0  0.0  NaN  NaN
         14          14  0.0  0.0  NaN  NaN
         15          15  0.0  0.0  NaN  NaN
         16          16  0.0  0.0  NaN  NaN
         17          17  0.0  0.0  NaN  NaN
         18          18  0.0  0.0  NaN  NaN
         19          19  0.0  0.0  NaN  NaN
         20          20  0.0  0.0  NaN  NaN
         21          21  0.0  0.0  NaN  NaN
         22          22  0.0  0.0  NaN  NaN
         23          23  0.0  0.0  NaN  NaN
         24          24  0.0  0.0  NaN  NaN
         25          25  0.0  0.0  NaN  NaN
20201012 0            0  NaN  NaN  0.0  0.0
         1            1  NaN  NaN  0.0  0.0
         2            2  NaN  NaN  1.0  0.0
         3            3  NaN  NaN  0.0  1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...