Я пытаюсь создать большой фрейм данных (main_df
), который в конечном итоге будет создан путем добавления строк из нескольких фреймов данных (df_subdir
) в нескольких подкаталогах (subdirs
), на один уровень ниже основного каталога (main_dir
).Другими словами, я должен:
- изменить на (каждый из)
subdirs
- извлечь данные из
df_subdir
- и добавить строки
df_subdir
до main_df
это должно быть сделано для всех subdirs
в main_dir
Учитывая, что мой текущий рабочий каталог уже main_dir
и все df_subdirs
.xlsx dataframes (столбцы = column1
, column2
и column3)
находятся непосредственно под subdirs
, который расположен ровно на один уровень ниже main_dir
, код, который я написал до сих пор, делает это, за исключением того, что Мне нужен дополнительный столбец (column4
), который однозначно определяет, какие subdirs
данные (строки) поступили из :
import os
import pandas as pd
# initialise my dataframe
main_df = pd.DataFrame(columns=['column1', 'column2', 'column3'])
# start the iteration
for i in subdirs:
os.chdir(f'{os.getcwd()}/{i}') # change to each of the subdirectories
main_df = main_df.append(pd.read_excel('df_subdir.xlsx')) # append the data from df_subdir to main_df
Теперь, учитывая, что имена моих subdirs
следуя шаблону типа uniq-identifier_pattern_pattern
, я мог бы извлечь uniq-identifier
с помощью os.getcwd().split('_')[0]
. Это значения, которые я хочу добавить к column4
при каждой итерации.
Я пробовал следующее:
# initialise my dataframe with the extra column4
main_df = pd.DataFrame(columns=['column1', 'column2', 'column3', 'column4'])
for i in subdirs:
os.chdir(f'{os.getcwd()}/{i}') # change to each of the subdirectories
main_df['column4'] = os.getcwd().split('_')[0] # specify uniq-identifiers in column4
main_df = main_df.append(pd.read_excel('name_of_df_subdir.xlsx'))
После этого column4
имеет одно значение, которое является uniq-identifier
последней subdirs
итерации.