基于列颜色读取Excel文件的Pandas方法

5

我有一个xlsx文件,其中的列有不同的颜色。

我想使用pandas在Python中仅读取此Excel文件中的白色列,但我不知道该如何做。

我能够将整个Excel读入数据框中,但是我错过了关于列颜色的信息,我不知道哪些列应该删除,哪些不应该删除。


请将您目前为止的内容发布到“阅读完整的Excel”中。 - G42
2个回答

11

(声明:我是要建议的库的作者之一)

使用StyleFrame(它包装了pandas),您可以将Excel文件读入数据框,而不会丢失样式数据。

考虑以下表格:

enter image description here

以及以下代码:

from styleframe import StyleFrame, utils
# from StyleFrame import StyleFrame, utils (if using version < 3.X)

sf = StyleFrame.read_excel('test.xlsx', read_style=True)
print(sf)

#          b  p                  y
#     0  nan  3             1000.0
#     1  3.0  4                2.0
#     2  4.0  5  42902.72396767148

sf = sf[[col for col in sf.columns
         if col.style.fill.fgColor.rgb in ('FFFFFFFF', utils.colors.white)]]
         # "white" can be represented as 'FFFFFFFF' or
         # '00FFFFFF' (which is what utils.colors.white is set to)
print(sf)

#          b
#    0   nan
#    1   3.0
#    2   4.0

所包含的示例似乎基于旧版本的API。 - Isaac
@Isaac 为什么?当你尝试使用它时遇到了什么错误? - DeepSpace
属性错误:'Styler'对象没有'fill'属性。 - Isaac
但是 col.style.bg_color 在(颜色)中似乎有效。 - Isaac
我是通过你上面的链接找到的,但是找不到fill.fgColor,因此我做出了这个假设。 - Isaac

1
这在 pandas 中无法完成。您需要使用其他库来读取 xlsx 文件并确定哪些列是白色的。我建议使用 openpyxl 库。

然后,您的脚本将按照以下步骤进行:

  1. 打开 xlsx 文件
  2. 读取和过滤数据(可以访问单元格颜色)并保存结果
  3. 创建 pandas 数据帧

编辑:将 xlrd 更改为 openpyxl,因为 xlrd 不再得到积极维护。


使用xlrd库无法读取xlsx文件,只能使用xlrd读取xls文件。 - Sumit Pokhrel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接