Запись имени файла с данными в одном кадре Python

У меня есть dataframe, длина (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])

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

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

Всего 1 ответ


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

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

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

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

Неиспользование этого для вашей 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)

Есть идеи?

10000