Python Pandas advanced read_excel或ExcelFile.parse

Python Pandas advanced read_excel或ExcelFile.parse,python,pandas,import-from-excel,Python,Pandas,Import From Excel,我正在尝试将excel文件有条件地解析为数据帧。我有一组excel文件,每个文件的顶部都有一些行,这些行不是数据的一部分——一些基于创建报告时使用的报告参数的标识数据 我想将ExcelFile.parse()方法与skiprows=some\u number一起使用,但我不知道每个文件的some\u number是什么 我知道HeaderRow将从一个可能性列表的一个成员开始。如何让熊猫创建从包含我的可能性列表中的任何字符串的行开始的dataframe 或者,是否有方法导入整个工作表,然后删除包

我正在尝试将excel文件有条件地解析为数据帧。我有一组excel文件,每个文件的顶部都有一些行,这些行不是数据的一部分——一些基于创建报告时使用的报告参数的标识数据

我想将
ExcelFile.parse()
方法与
skiprows=some\u number
一起使用,但我不知道每个文件的some\u number是什么

我知道
HeaderRow
将从一个可能性列表的一个成员开始。如何让熊猫创建从包含我的可能性列表中的任何字符串的行开始的
dataframe


或者,是否有方法导入整个工作表,然后删除包含我的可能性列表中某些字符串的行之前的行?

大多数时候,我只是在pandas中对此进行后期处理,即在pandas中诊断、删除行并更正数据类型。这样做的好处是更简单,但可以说不那么优雅(我怀疑这样做也会更快!)

实际上,我可以用python编写这篇文章,因为它在矢量化方面可能没有什么好处(我发现这篇文章更可读):


另一种可能是,在ExcelFile中乱搞并查找行号(同样是在上面的for循环中,但在openpyxl或类似版本中)。但是,如果您这样做,我不认为有一种方法可以只读取一次excel文件(xml)

与在csv上执行此操作相比,这有点不幸,在csv上,您可以读取前几行(直到看到所需的行/条目),然后将此打开的文件传递到
读取csv
。(如果您可以将Excel电子表格导出到csv,然后在pandas中进行解析,则会更快/更干净…)


注意:
read\u excel
无论如何都不是那么快(尤其是与
read\u csv
相比)。。。所以我想你尽快去熊猫乐园。

谢谢安迪·海登。我怀疑加载整个文件并使用熊猫清理是一条可行之路。对于read_csv,这很好,但是当前预期的输入是xls和xlsx文档的zipfile,在读取之前转换它们似乎效率很低。你知道read_excel是否比ExcelFile.parse()方法更快吗?@AnthonyRoberts一个调用另一个,性能没有差别:)
In [11]: df = pd.DataFrame([['blah', 1, 2], ['some_string', 3, 4], ['foo', 5, 6]])

In [12]: df
Out[12]:
             0  1  2
0         blah  1  2
1  some_string  3  4
2          foo  5  6

In [13]: df[0].isin(['some_string']).argmax()  # assuming it's found
Out[13]: 1
def to_skip(df, preceding):
    for s in enumerate(df[0]):
        if s in preceding:
            return i
    raise ValueError("No preceding string found in first column")

In [21]: preceding = ['some_string']

In [22]: to_skip(df, preceding)
Out[22]: 1

In [23]: df.iloc[1:]  # or whatever you need to do
Out[23]:
             0  1  2
1  some_string  3  4
2          foo  5  6