#python #excel #pandas #dataframe #import
#python #excel #pandas #dataframe #импорт
Вопрос:
У меня есть цикл for, который импортирует все файлы Excel в каталоге и объединяет их вместе в одном фрейме данных. Однако я хочу создать новый столбец, где каждая строка принимает строку имени файла Excel.
Вот мой код импорта и слияния:
path = os.getcwd()
files = os.listdir(path)
df = pd.DataFrame()
for f in files:
data = pd.read_excel(f, 'Sheet1', header = None, names = ['col1','col2'])
df = df.append(data)
Например, если первый файл Excel имеет имя «file1.xlsx «Я хочу, чтобы все строки из этого файла имели значение file1.xlsx
в col3
(новый столбец). Если второй файл Excel имеет имя «file2.xlsx «Я хочу, чтобы все строки из этого файла имели значение file2.xlsx
. Обратите внимание, что реального шаблона файлов Excel не существует, и я просто использую эти имена в качестве примера.
Большое спасибо
Ответ №1:
Создайте новый столбец в цикле:
df = pd.DataFrame()
for f in files:
data = pd.read_excel(f, 'Sheet1', header = None, names = ['col1','col2'])
data['col3'] = f
df = df.append(data)
Другое возможное решение с пониманием списка:
dfs = [pd.read_excel(f, 'Sheet1', header = None, names = ['col1','col2']).assign(col3 = f)
for f in files]
df = pd.concat(dfs)