Игнорирование объединенных строк при чтении книги Excel

Я написал скрипт Python для чтения строк в ячейке Excel и разделения их в книгах

Проблема в том, что в одном из скриптов метки строк находятся в строке 3, первые 2 строки состоят из объединенных ячеек, 1-я строка используется как метка для кадра данных.
Я хочу, чтобы первые две строки игнорировались и читались только строка 3 и ниже, но цель состоит в том, чтобы сделать это динамическим для других случаев, подобных этому, когда верхние ячейки объединяются.

def read_excel_file(file_buffer):
    # Load the Excel file using openpyxl
    wb = load_workbook(file_buffer, data_only=True)

    # Get a list of all workbook names
    workbook_names = wb.sheetnames
    
    workbooks = {}

    # Iterate over each workbook
    for workbook_name in workbook_names:
        # Read the workbook into a pandas DataFrame
        workbook_df = pd.read_excel(file_buffer, sheet_name=workbook_name)

        # Add the workbook to the dictionary
        workbooks[workbook_name] = workbook_df

    # Return the dictionary of workbooks
    return workbooks

Добавьте небольшой пример того, как выглядят данные на одном из листов + ожидаемый результат (workbook_df) на основе этого примера.

ouroboros1 20.08.2024 08:54

Почему бы просто не прочитать это с помощью openpyxl. Вы начали его использовать, так что продолжайте идти по этому пути. Должно быть достаточно быстро и, возможно, быстрее. Плюс у вас больше контроля

sammywemmy 20.08.2024 09:11
ws.iter_rows(min_row=3)
Charlie Clark 20.08.2024 13:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, вы хотите проверить, какие строки содержат объединенные ячейки, а затем пропустить эти строки.

Вы можете проверить строки, существующие в объединенных ячейках, найдя максимальную строку в списке, а затем пропустить строки до этой строки в read_excel.

import pandas as pd
from openpyxl import load_workbook


file_buffer = "merged.xlsx"
workbook_name = 'Sheet1'

wb = load_workbook(file_buffer)
ws = wb[workbook_name]

### Get the max row that exists in the merged cells list
max_merged_row = max([merge.max_row for merge in ws.merged_cells])
print(max_merged_row)

### Create Dataframe skipping the rows that have merged cells
workbook_df = pd.read_excel(file_buffer, sheet_name=workbook_name, skiprows=max_merged_row)


Другие вопросы по теме