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

404
我有一个大的电子表格文件 (.xlsx),正在使用 Python 的 Pandas 进行处理。需要从其中两个选项卡(表)中获取数据。其中一个选项卡含有大量数据,而另一个选项卡只有几个方格。
当我在任何工作表上使用pd.read_excel()时,看起来整个文件都被加载了 (不仅仅是我感兴趣的工作表)。那么,当我使用该方法两次 (每次一张纸),即使我们只使用指定的纸张,我也必须承受整个工作簿被读入两次的后果。
如何使用 pd.read_excel() 仅加载特定的选项卡?

我在这个其他帖子中举了一个例子:https://dev59.com/olYN5IYBdhLWcg3wb3wX#66280555 - neosergio
14个回答

2

是的,不幸的是,它将始终加载完整的文件。如果您需要反复执行此操作,则最好将工作表提取到单独的CSV中,然后分别加载。您可以使用d6tstack自动化该过程,它还可以添加其他功能,例如检查所有工作表或多个Excel文件中的列是否相等。

import d6tstack
c = d6tstack.convert_xls.XLStoCSVMultiSheet('multisheet.xlsx')
c.convert_all() # ['multisheet-Sheet1.csv','multisheet-Sheet2.csv']

请查看d6tstack的Excel示例。 (链接)

2
如果您已将Excel文件保存在与Python程序相同的文件夹中(相对路径),那么您只需要在文件名后面提及工作表编号即可。
例如:
 data = pd.read_excel("wt_vs_ht.xlsx", "Sheet2")
 print(data)
 x = data.Height
 y = data.Weight
 plt.plot(x,y,'x')
 plt.show()

0
df将是一个包含每个工作表的数据帧的列表,每个索引都对应一个工作表。
import pandas as pd

your_file = 'your_file.xlsx'
sh = pd.read_excel(your_file, sheet_name=None)

name = list(sh.keys())
df = []

for i in range(len(name)):
  df.append(pd.read_excel(your_file, name[i]))

0
使用read_excel从Excel文件中读取单个工作表
df = pd.read_excel(config_file, sheet_name = 'euro-currency-rates')

从Excel文件中读取多个工作表
excel_df    = pd.read_excel(self.excel_file, sheet_name=[0, 1, 2])          # Read 1st, 2nd, 3rd Sheets, Returns a Dictionary with each key number 0,1,2 and each corresponding values sheet data frame
# excel_df  = pd.read_excel(self.excel_file, sheet_name=['sheetA', 'sheetB', 'sheetC'])
# excel_df  = pd.read_excel(self.excel_file, sheet_name=None)       # Read All sheets
sheet1_df   = excel_df[0]
sheet2_df   = excel_df[1]
sheet3_df   = excel_df[2]  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接