【问题标题】:How to add to data frame based on text color (Styleframe)如何根据文本颜色添加到数据框(样式框)
【发布时间】:2019-10-31 08:52:40
【问题描述】:

我有一个包含 90k 行的大型 Excel 文件,我只想将具有红色文本的行添加到数据框(使用样式框)。如果我使用 5 行的小型 Excel 文件,则下面的代码可以工作,但是当我尝试将它与更大的文件一起使用时,数据框始终为空。

即使我删除 dropna,我也会得到一个包含所有 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: []

【问题讨论】:

    标签: python pandas dataframe styleframe


    【解决方案1】:

    这是 StyleFrame 中的一个错误。 usecolsheader kwargs 更改数据框的形状(因为它们导致 pd.read_excel 返回数据框/工作表的子集)。当read_excel 然后应用样式时,它会将样式应用到错误的单元格(简单地说,它会根据单元格在原始的整个工作表中的位置应用样式)。

    目前,“解决方法”是删除usecols = ['COLUMN_1'], header=2(当然效率要低得多)并稍后进行过滤,即

    sf = sf[['COLUMN_1']]
    

    直到我(我是 StyleFrame 的作者之一)找到解决这个问题的方法。

    【讨论】:

    • 我仍然得到一个空的 syleframe。似乎数据没有加载颜色。如果我遍历行,我会发现所有行都有“000000”字体颜色。对于 sframe['COLUMN_1'] 中的行: print(row.value, row.style.font_color) 输出:FRED 000000 nan 000000 nan 000000 nan 000000 nan 000000 DAYANA 000000 nan 000000 nan 000000 GEORGE 000000
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2022-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多