Как добавить к фрейму данных на основе цвета текста (Styleframe) - PullRequest
2 голосов
/ 17 июня 2019

У меня большой файл excel с строками по 90 тыс., И я хочу добавить только строки с красным цветом текста в фрейм данных (с использованием стилей).Код ниже работает, если я использую небольшой файл Excel с 5 строками, но когда я пытаюсь использовать его с файлом большего размера, фрейм данных всегда пуст.

, даже если я удаляю дропну, я получаю стилевую рамкувсе Nans, без красного цвета.

sf = StyleFrame.read_excel('myFile.xlsx', read_style=True, use_openpyxl_styles=False, usecols = ['COLUMN_1'], header = 2)

.

def only_cells_with_red_text(cell):
    return cell if cell.style.font_color in {utils.colors.red, 'FFFF0000'} else np.nan

.

sf_2 = StyleFrame(sf.applymap(only_cells_with_red_text).dropna(axis=(0, 1), how='all'))

Я ожидал, что в фрейм данных будут добавлены только ячейки с красным текстом*

Вывод пустого фрейма данных

Columns: []
Index: []

1 Ответ

0 голосов
/ 17 июня 2019

Это ошибка в StyleFrame. Кварги usecols и header изменяют форму фрейма данных (поскольку они заставляют pd.read_excel возвращать подмножество фрейма данных / листа). Когда read_excel затем применяет стили, он применяет стили к неправильным ячейкам (проще говоря, он применяет стили на основе расположения ячеек в исходном, полном листе).

На данный момент «обходной путь» состоит в том, чтобы удалить usecols = ['COLUMN_1'], header=2 (гораздо менее эффективный, конечно) и выполнить фильтрацию позже, т.е.

sf = sf[['COLUMN_1']]

пока я (я один из авторов StyleFrame) не найду способ преодолеть это.

...