使用Pandas为同一工作簿的多个工作表指定pd.read_excel()
我有一个大的电子表格文件(.xlsx),我正在使用Pythonpandas处理。 碰巧,我需要从该大文件中的两个选项卡中获取数据。 其中一个标签有大量的数据,另一个只有几个方格。
当我在任何工作表上使用pd.read_excel()时,它看起来像整个文件被加载(不只是我感兴趣的工作表)。 所以当我使用这个方法两次(每个表单一次)时,我实际上不得不让整个工作簿被读取两次(即使我们只使用指定的表格)。
我是用错了还是仅仅用这种方式来限制?
谢谢!
试试这个 :
xls = pd.ExcelFile('path_to_file.xls') df1 = xls.parse('Sheet1') df2 = xls.parse('Sheet2')
没有仔细观察,看第一行做了多less工作,后来做了多less工作,但至less是一个可以开始玩的地方。
您也可以使用表格的索引:
xls = pd.ExcelFile('path_to_file.xls') sheet1 = xls.parse(0)
会给第一个工作表。 为第二个工作表:
sheet2 = xls.parse(1)
您也可以将表格名称指定为参数:
data_file = pd.read_excel('path_to_file.xls', sheetname="sheet_name")
将仅上传工作表“sheet_name”
有3个选项:
- 将第一张表格直接读入数据框
- 阅读excel文件并获取工作表清单。 然后select并加载表单。
- 阅读所有表格并将其存储在字典中。
代码示例:
import pandas as pd df = pd.read_excel('excel_file_path.xls') # this will read the first sheet into df xls = pd.ExcelFile('excel_file_path.xls') # Now you can list all sheets in the file xls.sheet_names # ['house', 'house_extra', ...] # to read just one sheet to dataframe: df = pd.read_excel(file_name, sheetname="house") # to read all sheets to a map sheet_to_df_map = {} for sheet_name in xls.sheet_names: sheet_to_df_map[sheet_name] = xls.parse(sheet_name)
更新:
# @ihightower pointed out in the comments that all sheets can be # directly read into an ordered dictionary in 1 step sheet_to_df_map = pd.read_excel(file_name, sheetname=None)