【问题标题】:Error while appending many Excel files to one in Python在 Python 中将多个 Excel 文件附加到一个文件时出错
【发布时间】:2021-08-29 20:32:50
【问题描述】:

我正在尝试在 Python 中将 10 个 Excel 文件附加到一个文件中,

使用下面的代码,我得到了

TypeError: first argument must be an iterable of pandas objects, 
you passed an object of type "DataFrame"

一旦我将 sheet_name 参数更改为 None,代码就会完美运行。 但是,所有 10 个 excel 文件都有三张表,我只想要每个 excel 文件的特定表。 有没有办法完成它?

感谢您的帮助。

  import pandas as pd
    import glob
    path = r'Folder path'
    filenames = glob.glob(path + "\*.xlsx")
    finalexcelsheet = pd.DataFrame()
    for file in filenames:
        df = pd.concat(pd.read_excel(file, sheet_name= 'Selected Sheet'), ignore_index=True,sort=False)
        finalexcelsheet=finalexcelsheet.append(df,ignore_index=True) 

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/questions/47743741/…
  • aalways 将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 我认为您以错误的方式使用pd.concat - 也许您甚至不需要它。 pd.concat nead 列表与许多 dataframes 连接它们 - 如果您使用 sheet_name=Noneread_excel 可能会为您提供带有 dataframes 的列表(每张纸分开 dataframe)但如果您使用名称,那么您只有一个dataframeconcatenate 无关。如果你只有一个dataframe,那么你就不需要concatenate,或者你应该使用finalexcelsheet = pd.concat( [finalexcelsheet, pd.read_excel(...)], ...)
  • 首先您可以将read_excel() 分配给变量并检查使用sheet_name=Nonesheet_name= 'Selected Sheet' 时得到的结果

标签: python excel automation


【解决方案1】:

我无法测试它,但问题是因为您以错误的方式使用 concat - 或者更确切地说是因为您的情况不需要 concat


concat 需要列表与dataframes 类似

concat( [df1, df2, ...], ...)

但是read_excel 为不同的sheet_name=... 提供不同的对象,这就产生了问题。

read_excel for sheet_name=None 返回列表或字典,所有工作表都分开dataFrames

[df_sheet_1, df_sheet_2, ...]

然后concat 可以将他们加入一个dataframe

read_excel for sheet_name=name 返回单个 dataframe

df_sheet

然后concat 没有任何共同加入 - 它给出了错误。
但这意味着你不需要concat

你应该直接将read_excel分配给df

for file in filenames:
    df = pd.read_excel(file, sheet_name='Selected Sheet')
    finalexcelsheet = finalexcelsheet.append(df, ignore_index=True) 

【讨论】:

    猜你喜欢
    • 2018-04-06
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2020-03-19
    • 2011-07-27
    相关资源
    最近更新 更多