首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据文本颜色添加到数据框(Styleframe)

如何根据文本颜色添加到数据框(Styleframe)
EN

Stack Overflow用户
提问于 2019-06-18 02:15:19
回答 1查看 494关注 0票数 2

我有一个有90k行的大型excel文件,我只想将具有红色文本的行添加到dataframe (使用styleframe)。如果我使用一个5行的小excel文件,下面的代码可以工作,但当我尝试使用一个较大的文件时,数据框总是空的。

即使我删除了dropna,我也得到了一个只有Nans而没有red的样式框。

代码语言:javascript
复制
sf = StyleFrame.read_excel('myFile.xlsx', read_style=True, use_openpyxl_styles=False, usecols = ['COLUMN_1'], header = 2)

代码语言:javascript
复制
def only_cells_with_red_text(cell):
    return cell if cell.style.font_color in {utils.colors.red, 'FFFF0000'} else np.nan

代码语言:javascript
复制
sf_2 = StyleFrame(sf.applymap(only_cells_with_red_text).dropna(axis=(0, 1), how='all'))

我只希望将带有红色文本的单元格添加到dataframe

输出为空DataFrame

代码语言:javascript
复制
Columns: []
Index: []
EN

回答 1

Stack Overflow用户

发布于 2019-06-18 02:56:19

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

现在,“变通办法”是删除usecols = ['COLUMN_1'], header=2 (当然,效率要低得多),然后再进行过滤,即

代码语言:javascript
复制
sf = sf[['COLUMN_1']]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56636775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档