我有一个具有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'))
我希望仅将带有红色文本的单元格添加到数据框中
输出为Empty DataFrame
Columns: []
Index: []
答案 0 :(得分:0)
这是StyleFrame中的错误。 usecols
和header
分支会更改数据框的形状(因为它们导致pd.read_excel
返回数据框/工作表的子集)。当read_excel
然后应用样式时,会将样式应用到错误的单元格(简单地说,它基于原始的整个工作表中单元格的位置来应用样式)。
目前,“解决方法”是删除usecols = ['COLUMN_1'], header=2
(当然效率要低得多),然后再进行过滤,即
sf = sf[['COLUMN_1']]
直到我(我是StyleFrame的作者之一)找到解决该问题的方法。