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

标签 python excel python-3.x pandas

我正在尝试使用 Pandas 从 Python 中的 Excel 工作簿中读取不同的工作表。当我阅读整个工作簿然后我想应用 .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'>

非常感谢任何帮助或建议。

最佳答案

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

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

请注意 sheetname 参数将在 future 的 pandas 版本中更改为 sheet_name ......

关于python - 如何将工作表转换为 Pandas 中的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45310787/

相关文章:

python - 编写 gzip 格式压缩的 ElementTree

vba - 创建范围排除中间列

vba - 每个循环停止

python-3.x - 安装“模式”时命令 "python setup.py egg_info"失败,错误代码为 1

python-3.x - Python 3.4 ssl.SSLEOFError : EOF occurred in violation of protocol (_ssl. c:1638)

python - 将与不同值关联的重复条目转换为包含这些值列表的条目?

python - 连续获取输出: rsync info=progress2 call in python script

python - 精神病学中的审判处理者和时间测量

excel - VBA:使用 Excel 查询 Access。为什么这么慢?

python-3.x - 有没有办法断言已在 unittest 模拟对象上设置了属性?