Python Pandas数据框读取精确指定范围的Excel表格

我有很多不同的表格(和Excel表中的其他非结构化数据)..我需要从Excel工作表“数据”的“工作表2”创build超出范围'A3:D20'

所有的例子,我遇到钻取层次,但不是如何从一个确切的范围内挑选

import openpyxl import pandas as pd wb = openpyxl.load_workbook('data.xlsx') sheet = wb.get_sheet_by_name('Sheet2') range = ['A3':'D20'] #<-- how to specify this? spots = pd.DataFrame(sheet.range) #what should be the exact syntax for this? print (spots) 

一旦我得到这个,然后我打算查找列A中的一些数据,并find列B中的相应值

编辑:我意识到,openpyxl花了太长时间,所以已经改变了pandas.read_excel('data.xlsx','Sheet2') ,而且在这个阶段nad是快得多

编辑2:目前,我已经把我的数据在一张表中,并删除所有其他信息..添加列名称,应用index_col在我最左边的列..然后使用wb.loc [],它为我解决

一种方法是使用openpyxl模块。

这是一个例子:

 from openpyxl import load_workbook wb = load_workbook(filename='data.xlsx', read_only=True) ws = wb['Sheet2'] # Read the cell values into a list of lists data_rows = [] for row in ws['A3':'D20']: data_cols = [] for cell in row: data_cols.append(cell.value) data_rows.append(data_cols) # Transform into dataframe import pandas as pd df = pd.DataFrame(data_rows) 

使用pandas read_excel文档中的以下参数:

  • skiprows:列表状
    • 行开始时跳过(0索引)
  • parse_cols:int或list,默认为None
    • 如果None没有parsing所有的列,
    • 如果int指示最后一列将被parsing
    • 如果ints列表则表示要parsing的列号列表
    • 如果string表示逗号分隔的列名和列范围列表(例如“A:E”或“A,C,E:F”)

我想象这个电话会看起来像:

 df = read_excel(filename, 'Sheet2', skiprows = 2, parse_cols = 'A:D')