Итерация по столбцам на каждом листе книги excel
Есть книга эксель, в примере - синтетически единые данные и урезаны по кол-ву листов, в оригинале их 900!
Моя задача: объединить эти листы в одну таблицу
(подставив одну таблицу под другой).
Проблема: данные не одинаковы, и значения некоторых столбцов уехали в столбец без заголовка.
Подскажите, пожалуйста, как пройтись по листам книги и заменить пропуски в нужном столбце, удалив лишний и затем объединить все таблицы?
вот мой код:
# Загружаем файл в переменную `file`
file = r'C:\Users\julij\OneDrive\Рабочий стол\Книга11-копия.xlsx'
# Загружаем spreadsheet в объект pandas
xl_file_obj = pd.ExcelFile(file)
for sheet_name in xl_file_obj.sheet_names:
data = pd.read_excel(xl_file_obj, sheet_name=sheet_name) # Прочитать листы книги
for column in data.columns:
if column == 'Unnamed: 10':
data['10']=data['10'].fillna('Unnamed: 10')
elif column == 'Unnamed: 12':
data['12']=data['12'].fillna('Unnamed: 12')
break
Ответы (1 шт):
Автор решения: AnnaBazueva
→ Ссылка
Вы неправильно понимаете, как присваиваются имена неименованным столбцам.
Ваш код ничего не делает.
Я добавила одну строчку...
for sheet_name in xl_file_obj.sheet_names:
data = pd.read_excel(xl_file_obj, sheet_name=sheet_name) # Прочитать листы книги
print(f'Sheet: {sheet_name}\nColumns: {data.columns}\n')
for column in data.columns:
if column == 'Unnamed: 10':
data['10']=data['10'].fillna('Unnamed: 10')
elif column == 'Unnamed: 12':
data['12']=data['12'].fillna('Unnamed: 12')
break
... проанализируйте вывод:
Sheet: Sheet1
Columns: Index([1, 2, 3, 4, 10, 'Unnamed: 5', 11, 12, 13, 14, 15], dtype='object')
Sheet: Sheet1 (2)
Columns: Index([1, 2, 3, 4, 10, 'Unnamed: 5', 11, 12, 'Unnamed: 8', 13, 14, 15], dtype='object')
Sheet: Sheet1 (3)
Columns: Index([1, 2, 3, 4, 10, 'Unnamed: 5', 11, 12, 13, 14, 15], dtype='object')