Вы можете указать Pandas просто загрузить первые 20
строки (при условии, что там есть ваш заголовок). Затем вы можете найти значение Row Labels
и затем использовать это местоположение для загрузки всего файла Excel. Например:
import pandas as pd
filename = 'input.xlsx'
sheet = 'Sheet1'
df = pd.read_excel(filename, sheet, nrows=20)
header_loc = df[df == 'Row Labels'].dropna(axis=1, how='all').dropna(how='all')
row = header_loc.index.item()
column = header_loc.columns.item()
df = pd.read_excel(filename, sheet, skiprows=row+1, usecols=list(range(column, column+5)))
Если бы у вас был CSV, сработал бы следующий подход. Он читает каждую строку вашего файла и пытается найти Row Labels
в разобранной строке. Это не удастся, пока не будет достигнута фактическая строка заголовка. Когда это происходит, индекс столбца используется для выбора нужных столбцов справа от него. Параметр skiprows
используется для указания пандам перейти к правильной строке заголовка в файле, и usecols
может быть правильно задан с помощью следующих четырех имен столбцов.
import pandas as pd
import csv
filename = 'input.csv'
with open(filename, newline='') as f_csv:
for row_number, row in enumerate(csv.reader(f_csv)):
try:
col = row.index('Row Labels')
break
except ValueError:
continue
df = pd.read_csv(filename, skiprows=row_number, usecols=row[col:col+4])
print(df)