Pandas: чтение Excel с объединенными ячейками и пустыми значениями

Есть Excel файл с объединенными ячейками:

введите сюда описание изображения

Пишу код:

df = pd.read_excel('test.xlsx',sheet_name='Лист1')

Pandas выдает:

введите сюда описание изображения

При написание заполнение:

df = pd.read_excel('test.xlsx',sheet_name='Лист1').fillna(method='ffill')

Выдает:

введите сюда описание изображения

А хотелось что бы выдавал:

введите сюда описание изображения

Делать это надо не вручную! Это просто пример Помоги пожалуйста


Ответы (2 шт):

Автор решения: splash58

Укажите ось, чтоб заполнялось по строкам

df = df.fillna(method='ffill', axis=1)
→ Ссылка
Автор решения: splash58

действительно, для произвольных - вертикальных и горизонтальных объединений ячеек - в старых xls решения в сети есть, а вот что касается openpyxl есть проблемы

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

import pandas as pd
import openpyxl

df = pd.read_excel('Книга1.xlsx', sheet_name='Лист1')
excel = openpyxl.load_workbook(filename='Книга1.xlsx')
sheet = excel.worksheets[0]

for r in sheet.merged_cells.ranges:
    cl, rl, cr, rr = r.bounds  # границы объединенной области
    rl -= 2
    rr -= 1
    cl -= 1
    base_value = df.iloc[rl, cl]
    df.iloc[rl:rr, cl:cr] = base_value

print(df)

получается, что и хотелось

до

     a    b    c    d
0    a  NaN  NaN  NaN
1    b    c    v    j
2  NaN    f    g    k
3  NaN    a  NaN    m
4    c    v    b    n

после

     a    b    c    d
0    a    a    a    a
1    b    c    v    j
2    b    f    g    k
3  NaN    a    a    m
4    c    v    b    n
→ Ссылка