熊猫:从下面的行开始读取具有特定值的Excel文件

FaC*_*fee 4 python excel pandas

说我有以下Excel文件:

    A      B     C
0   -      -     -
1   Start  -     -
2   3      2     4
3   7      8     4
4   11     2     17
Run Code Online (Sandbox Code Playgroud)

我想读取数据框中的文件,以确保我开始在该值所在的行下方读取它Start

注意:该Start值并不总是位于同一行中,因此如果我要使用:

import pandas as pd
xls = pd.ExcelFile('C:\Users\MyFolder\MyFile.xlsx')
df = xls.parse('Sheet1', skiprows=4, index_col=None)
Run Code Online (Sandbox Code Playgroud)

这将因skiprows需要修复而失败。是否有任何变通办法来确保xls.parse找到字符串值而不是行号?

bfr*_*e67 8

如果您知道您感兴趣的特定行,您可以使用从顶部跳过skiprow,然后仅解析您想要使用的行(或多行)nrows- 请参阅pandas.read_excel

df = pd.read_excel('myfile.xlsx', 'Sheet1', skiprows=2, nrows=3,)
Run Code Online (Sandbox Code Playgroud)


Abh*_*ate 5

df = pd.read_excel('your/path/filename')
Run Code Online (Sandbox Code Playgroud)

答案有助于找到df中“开始”的位置

 for row in range(df.shape[0]): 

       for col in range(df.shape[1]):

           if df.iat[row,col] == 'start':

             row_start = row
             break
Run Code Online (Sandbox Code Playgroud)

在具有row_start之后,您可以使用熊猫的子帧

df_required = df.loc[row_start:]
Run Code Online (Sandbox Code Playgroud)

如果您不需要包含“开始”的行,则只需将row_start加1

df_required = df.loc[row_start+1:]
Run Code Online (Sandbox Code Playgroud)