pandas 可以根据值而不是行隐式确定 header 吗?

Can pandas implicitly determine header based on value, not row?

我与使用 Excel 的人一起工作,并不断添加或减去我不知道的行。我必须从文档中抓取数据,找到 header 的行会根据心情而变化。

我的挑战是通过检测 header 的位置来处理这些振荡电流。

我首先使用 xlrd 和一些使用工作簿中的值的条件语句来组织我的抓取。

我最初的尝试是有效的,而且很长(所以我不会发布它)但涉及引入整个 sheet,而不是切片:

from xlrd import open_workbook

book = open_workbook(fName)
sheet = book.sheet_by_name(sht)

return book,sheet

然而,它很大,我更希望得到更有针对性的选择。 header 值永远不会改变,当数据出现在该行之后时也不会改变。

您是否知道使用 pandas.ExcelFilepandas.read_excel 根据 sheet 中找到的值隐式获取 header 的方法?

这是我对 pandas.ExcelFile 的尝试:

import pandas as pd

xlsx = pd.ExcelFile(fName)
dataFrame = pd.read_excel(xlsx, sht,
                          parse_cols=21, merge_cells=noMerge, 
                          header=header)

return dataFrame

除非我为调用提供正确的 header 值,否则我无法使代码工作,这正是我希望避免的。

这个 previous question 似乎提出了一个类似的问题,但没有解决隐式查找 header 的问题。

对 ExcelFile 对象执行相同的循环:

xlsx = pd.ExcelFile(fName)
sheet = xlsx.sheet_by_name(sht)
# apply the same algorithm you wrote against xlrd here
# ... results in having header_row = something, 0 based
dataFrame = pd.read_excel(xlsx, sht,
                      parse_cols=21, merge_cells=noMerge, 
                      skip_rows=header_row)