如何将工作表转换为Pandas中的数据框架?

我正在尝试从pandas的Python工作簿中读取不同的工作表。 当我阅读整个工作簿,然后我想应用一个.merge()时,第一个工作表被读取,但其他人不考虑。 我试图读取工作簿的每个工作表,但我猜他们没有成功转换为数据框,因为当我应用.merge()我最终以下错误: ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>

这是我迄今为止所做的:

此代码用于将整个工作簿转换为数据框,但只处理第一个工作表的数据

 import pandas as pd import pypyodbc #sql extractor start_date = date.today() retrieve_values = "[DEV].[CS].[QT_KPIExport] @start_date='{start_date:%Y-%m-%d}'".format( start_date=start_date) connection = pypyodbc.connect(driver="{SQL Server}", server="xxx.xxx.xxx.xxx", uid="X",pwd="xxx", Trusted_Connection="No") data_frame_sql = pd.read_sql(retrieve_values, connection) #Read the entire workbook wb_data = pd.ExcelFile("C:\\Users\\Dev\\Testing\\Daily_Data\\NSN-Daily Data Report.xlsx") #Convert to a dataframe the entire workbook data_frame_excel = pd.read_excel(wb_data,index_col=None,na_values=['NA'],parse_cols="J") #apply merge merged_df = data_frame_sql.merge(data_frame_excel,how="inner",on="sectorname") 

此代码尝试读取不同的工作表,并将其转换为数据框,但没有成功… (查看下面的答案)

 data_frame_sql = pd.read_sql(retrieve_values, connection) #Method 1: Tried to parse worksheet 2 #Read the entire workbook and select the specific worksheet wb_data = pd.ExcelFile("C:\\Users\\Dev\\Testing\\Daily_Data\\NSN-Daily Data Report.xlsx", sheetname="Sheet-2") data_frame_excel = pd.read_excel(wb_data,index_col=None,na_values=['NA'],parse_cols="J") #apply merge merged_df = data_frame_sql.merge(data_frame_excel,how="inner",on="sectorname") #No success... the data of the first sheet is read #Method 2: Tried to parse worksheet 2 #Read the entire workbook wb_data = pd.ExcelFile("C:\\Users\\Dev\\Testing\\Daily_Data\\NSN-Daily Data Report.xlsx") data_frame_excel = pd.read_excel(wb_data,index_col=None,na_values=['NA'],parse_cols="J") #select one specific sheet ws_sheet_2 = wb_data.parse("Sheet-2") #apply merge merged_df = data_frame_sql.merge(ws_sheet_2,how="inner",on="sectorname") # No success.... ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'> 

任何帮助或build议,不胜感激。

通过使用read_excel方法的sheetname = None参数,可以将工作簿中的所有工作表放到字典中。 键/值对将是ws名称/数据框。

 ws_dict = pd.read_excel('excel_file.xlsx', sheetname=None) 

请注意,在未来的pandas版本中,sheetname参数将更改为sheet_name …

我find了一个解决scheme,做到了这一点。

 #Method 1: Add the sheetname once you have read the entire workbook #Read the entire workbook wb_data = pd.ExcelFile("C:\\Users\\Dev\\Testing\\Daily_Data\\NSN-Daily Data Report.xlsx") #Select your sheetname to read data_frame_excel = pd.read_excel(wb_data,index_col=None,na_values= ['NA'],parse_cols="J" sheetname="Sheet-2") #apply merge merged_df = data_frame_sql.merge(data_frame_excel,how="inner",on="sectorname")