使用Pandas的pd.read_excel()方法读取同一工作簿中的多个工作表。

21 浏览
0 Comments

使用Pandas的pd.read_excel()方法读取同一工作簿中的多个工作表。

我有一个大的电子表格文件(.xlsx),我正在使用python pandas进行处理。我需要从该大文件中获取两个标签(工作表)的数据。其中一个标签具有大量数据,而另一个仅有几个方格。

当我在任何工作表上使用pd.read_excel()时,它看起来像整个文件都已加载(不仅仅是我感兴趣的工作表)。因此,当我使用该方法两次(每个工作表一次)时,我实际上必须忍受整个工作簿被读入两次(即使我们只使用指定的工作表)。

我如何使用pd.read_excel()仅加载指定的工作表?

admin 更改状态以发布 2023年5月19日
0
0 Comments

有几个选项:

直接将所有工作表读入有序字典中。

import pandas as pd
# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel(file_name, sheet_name=None)
# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel(file_name, sheetname=None)

直接将第一个工作表读入数据帧中。

df = pd.read_excel('excel_file_path.xls')
# this will read the first sheet into df

读取Excel文件并获取工作表列表。然后选择并加载工作表。

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, sheet_name="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)
    # you can also use sheet_index [0,1,2..] instead of sheet name.

感谢@ihightower指出了读取所有工作表的方法,感谢@toto_tico、@red-headphone指出了版本问题。

sheetname : string, int, mixed list of strings/ints, or None, default 0
自版本0.21.0起被弃用:请使用sheet_name代替 源链接

0
0 Comments

尝试使用pd.ExcelFile:\n

xls = pd.ExcelFile('path_to_file.xls')
df1 = pd.read_excel(xls, 'Sheet1')
df2 = pd.read_excel(xls, 'Sheet2')

\n正如@HaPsantran所指出的,ExcelFile()调用时会读取整个Excel文件(似乎没有绕过此方法的方式)。这仅仅是为了避免每次访问新表格时都要重新读取相同的文件。\n请注意,pd.read_excel()sheet_name参数可以是表格的名称(如上所述),指定表格编号的整数(例如0、1等),表格名称或索引的列表,或None。如果提供一个列表,它将返回一个字典,其中键是表格名称/索引,值是数据帧。默认情况下,只返回第一个表格(即sheet_name=0)。\n如果指定None,则会返回所有表格,作为一个{sheet_name:dataframe}字典。

0