如何从python中的.xls文件读取多个表?

时间:2019-01-09 09:46:04

标签: python excel pandas xlrd

我需要使用python从Excel文件中的工作表中读取多个表。该工作表如下所示: enter image description here

我想获取一个包含Firat_Table中信息的python对象,以及Sencond_Table中的信息。 我尝试通过这种方式使用pandas和Dataframe.iloc:

import pandas as pd
xls = pd.ExcelFile('path_to_xls_file')
df = pd.read_excel(xls, "sheet_1")
# first table
df1 = df.iloc[2:12,0:6]

但是我没有从First_Table中获得预期的单元格。 我在行和列的范围上做错了吗? 是否必须使用确切的row和col索引来指定它,还是有一种更有效,更优雅的方式来做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:2)

使用“ usecols”参数选择要从excel文件读取的列。熊猫会相应地选择行。

此外,您需要将index设置为False,以避免将第一列作为索引。

以下是您的任务的示例代码

pd.read_excel(path, usecols=range(1,6), index=False)

documentation

中查找更多信息

答案 1 :(得分:2)

该方法是正确的,但是可能不是最佳方法。您无法正确显示表格,因为索引不正确-根据屏幕df1 = df.iloc[1:12,1:6]可以完成此工作。

更好的解决方案是为pd.read_excel()

设置 header usecols 参数
  

标题:整数,整数列表

     

默认值0行(0索引),用于解析的DataFrame的列标签。   如果传递了整数列表,则这些行位置将合并为一个MultiIndex。

     

如果没有标题,则使用 None

     

usecols :整数或列表,默认为无

     

如果 None 然后解析所有列,

     

如果 int 则指示   被解析

     

如果整数列表,则指示要   解析

     

如果字符串则表示Excel列的逗号分隔列表   字母和列范围(例如“ A:E”或“ A,C,E:F”)。范围是   包括双方。

取自https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

此外,可能有一些软件包设计用于读取一张​​纸中的多个表,但是我不知道有哪个软件包。

pandas read_excel multiple tables on the same sheet-重复吗?