首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将特定工作表从多个工作簿连接到一个df时出错

将特定工作表从多个工作簿连接到一个df时出错
EN

Stack Overflow用户
提问于 2022-12-01 06:05:07
回答 1查看 19关注 0票数 1

我正试图从大约300个excel工作簿中分离出一个特定的工作表,并将它们合并成一个数据文件。

我试过这样的代码:

代码语言:javascript
复制
import pandas as pd
import glob
import openpyxl
from openpyxl import load_workbook

pd.set_option("display.max_rows", 100, "display.max_columns", 100)
allexcelfiles = glob.glob(r"C:\Users\LELI Laptop 5\Desktop\DTP1\*.xlsx")
cefdf = []

for ExcelFile in allexcelfiles:
    wb = load_workbook(ExcelFile)
    for sheet in wb:
        list_of_sheetnames = [sheet for sheet in wb.sheetnames if "SAR" in sheet]
        df = pd.read_excel(ExcelFile, sheet_name = list_of_sheetnames, nrows = 24)
        cefdf.append(df)
df = pd.concat(cefdf)

从中我得到了这个错误:

代码语言:javascript
复制
TypeError: cannot concatenate object of type '<class 'dict'>'; only Series and DataFrame objs are valid

然后我试了一下:

代码语言:javascript
复制
df = pd.DataFrame(pd.read_excel(ExcelFile, sheet_name = list_of_sheetnames, nrows = 24))

从中我得到了这个错误:

代码语言:javascript
复制
ValueError: If using all scalar values, you must pass an index
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-01 06:12:12

您可以连接DataFrames的二叉树,原因是因为list_of_sheetnames中有多个单张名称

代码语言:javascript
复制
for ExcelFile in allexcelfiles:
    wb = load_workbook(ExcelFile)

    list_of_sheetnames = [sheet for sheet in wb.sheetnames if "SAR" in sheet]
    
    dfs = pd.read_excel(ExcelFile, sheet_name = list_of_sheetnames, nrows = 24)
    cefdf.append(pd.concat(dfs))
    
df = pd.concat(cefdf)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74637544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档