首页 > 解决方案 > 在 Python 中将多个 Excel 文件附加到一个文件时出错

问题描述

我正在尝试在 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) 

标签: pythonexcelautomation

解决方案


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


concat需求清单与dataframes喜欢

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

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

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

[df_sheet_1, df_sheet_2, ...]

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

read_excel单人sheet_name=name退货dataframe

df_sheet

然后concat什么都没有加入 - 它给出了错误。
但这意味着您不需要concat.

您应该直接分配read_exceldf

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

推荐阅读