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

8

假设我有以下的Excel文件:

    A      B     C
0   -      -     -
1   Start  -     -
2   3      2     4
3   7      8     4
4   11     2     17

我希望读取文件并将其存储在数据框中,确保我从Start值下方的行开始阅读。

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

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

由于skiprows需要被修复,因此这将失败。是否有任何解决方法可以确保xls.parse查找字符串值而不是行号?

3个回答

12
df = pd.read_excel('your/path/filename')

这篇回答有助于在df中找到“start”的位置

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

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

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

             row_start = row
             break

使用pandas的子框架之前,可以使用row_start方法。

df_required = df.loc[row_start:]

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

df_required = df.loc[row_start+1:]

8

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

df = pd.read_excel('myfile.xlsx', 'Sheet1', skiprows=2, nrows=3,)

3
您可以使用pd.read_excel('C:\Users\MyFolder\MyFile.xlsx', sheet_name='Sheet1'),因为它会忽略空的Excel单元格。
您的DataFrame应该如下所示:
    A      B     C
0   Start NaN   NaN
1   3      2     4
2   7      8     4
3   11     2     17

通过使用以下方法删除第一行

df.drop([0])

获取

    A      B     C
0   3      2     4
1   7      8     4
2   11     2     17

这几乎是我要找的,因为我的真实Excel文件在前x行中包含各种信息,所以通过执行'pd.read_excel('C:\Users\MyFolder\MyFile.xlsx',sheetname='Sheet1')' 我仍然会提取那些信息。这就是为什么我明确要求查找特定值的方法。顺便说一句,感谢您的努力,我将为此点赞。 - FaCoffee

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