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')