如何将过滤的Excel表导入python?
我有一个Excel表,它看起来像
然后,我在列上创build了一个filter来获取所有的女性数据,如下所示:
然后,我想导入过滤的数据到Python。 我使用了下面的pandas命令:
df = pd.read_excel(io="test.xlsx", sheetname="Sheet1") print(df)
问题是我得到了整个数据:
Id Name Age Sex 0 1 Tom 12 M 1 2 Silke 33 F 2 3 Olga 22 F 3 4 Tom 33 M
但是,这不是我想要的,我只想过滤数据:
Id Name Age Sex 1 2 Silke 33 F 2 3 Olga 22 F
我怎样才能做到这一点与Python?
注意:我之所以要导入过滤的数据,不是在python中过滤数据,是因为原来的excel数据。 Excel表中的filter非常复杂。 它不仅基于许多列,还基于数千个不同的值。 如果我在python中过滤数据将是一个大问题。
正如前面在评论中提到的,一个非常快速和肮脏的方法来做的伎俩是复制您的过滤数据在一个新的Excel文件(没有任何filter),并从这样的文件中获取数据。
更优雅和完整的解决scheme在于使用openpyxl
来读取过滤的数据。
首先,安装openpyxl
$ pip install openpyxl
然后,使用这样的脚本来读取可见的数据:
from openpyxl import load_workbook wb = load_workbook('foo.xlsx') # use the actual path of your workbook ws = wb['Bar'] # use your sheet name instead of Bar # iterate over all the rows in the sheet for row in ws: # use the row only if it has not been filtered out (ie, it's not hidden) if ws.row_dimensions[row[0].row].hidden == False: print row # ...or do what you need
请注意, row
是Cell
的元组。 使用属性value
来访问每个单元格的值:
if ws.row_dimensions[row[0].row].hidden == False: for cell in row: print cell.value
您可以使用该逻辑从原始过滤的文件中直接获取值。
PS:openpyxl还提供了一个很酷的pandas集成开箱即用。