Есть ограничения на pd.read_excel
. Когда у нас есть сложный лист Excel, содержащий несколько таблиц, pd.read_excel
начинает вести себя странно. Например, допустим, у нас есть вот этот лист Excel.
import pandas as pd print(pd.read_excel('Book1.xlsx'))
^ если мы используем pd.read_excel
, мы получаем этот огромный странный фрейм данных. Но что, если мы хотим извлечь 3 отдельные таблицы сами по себе?
Идея — извлечение отдельных таблиц
В каждой таблице есть:
- Верхняя левая ячейка
- заданное количество столбцов
- заданное количество строк
Таким образом, мы можем написать код для извлечения этих 3 таблиц по отдельности, учитывая вышеприведенные данные для каждой таблицы.
Базовый openpyxl для чтения файла Excel
Во-первых, pip install openpyxl
в вашем cmd/терминале.
from openpyxl import load_workbook # load path to excel file workbook = load_workbook('Book1.xlsx') # select your excel sheet sheet1 = workbook['Sheet1'] print(sheet1['B2'].value) # Fruit
Чтобы прочитать значение ячейки, нам просто нужно передать координаты.
Код для извлечения отдельных таблиц
from string import ascii_uppercase from itertools import pairwise from openpyxl import load_workbook import pandas as pd def get_next_code(code): ''' returns next column letter given existing one input: 'AA', output: 'AB' input: 'AB', output: 'AC' ''' letter_map = {a:b for a,b in pairwise(ascii_uppercase)} code = list(code) i = -1 while True: if code[i] == 'Z': code[i] = 'A' i -= 1 if abs(i) > len(code): return 'A' + ''.join(code) else: code[i] = letter_map[code[i]] return ''.join(code) def…