Python 将多个xlsx文件合并为一个

Python 将多个xlsx文件合并为一个,python,pandas,Python,Pandas,在一个目录中,我有几个xlsx文件,我想把它们放在一个xlsx文件中。所以我做了以下代码: all_data=pd.DataFrame() for item_excell in arr2: if item_excell.endswith('.xlsx'): df=pd.read_excel(item_excell) all_data=all_data.append(df, ignore_index=True) all_data.to_excel('fi

在一个目录中,我有几个xlsx文件,我想把它们放在一个xlsx文件中。所以我做了以下代码:

all_data=pd.DataFrame()
for item_excell in arr2:
    if item_excell.endswith('.xlsx'):
        df=pd.read_excel(item_excell)
        all_data=all_data.append(df, ignore_index=True)

 all_data.to_excel('final_table.xlsx')
我以前的excell有标题,我想保留它们,因为有了这段代码,我不会得到标题,信息也会混淆

试试这个:

例如,如果您有3个
.xlsx
文件:

df1 = pd.read_excel('file 1.xlsx')
df2 = pd.read_excel('file 2.xlsx')
df3 = pd.read_excel('file 3.xlsx')

final_df = pd.concat([df1, df2, df3])
final_df.to_excel('combined file.xlsx')

正如其他人所注意到的,您的
所有\u数据都应该在for循环之外

正如taga提供的答案一样,我将向您展示如何使用
Pathlib
,它是在3.4版中添加到Python中的,允许以最少的代码与您的文件系统进行真正高级的交互

from pathlib import Path
your_dir = r'c:\path\to\excels' #r for windows.
现在,我们使用
glob
,它允许通配符匹配,以使用列表理解查找给定位置中的所有优秀项

excels = [f for f in Path.(your_dir).glob('*.xlsx')] 
这和

excels = []
for file in Path.(your_dir).glob('*.xlsx'):
    excels.append(file) 
现在您可以查看您的dfs

dfs = [pd.read_excel(frame) for frame in excels)]
final_df = pd.concat(dfs)
# do stuff
final_df.to_excel('file_name.xlsx',index=False)

所有的excel都应该在“for”之外。你的python版本是否大于3.4?是的,我使用的是python 3.7.2。这样我只得到一个xlsx文件。但这很奇怪,因为当我打印最终df时,我得到了所有tge文件。但是当它写入时,它只显示最后一个条目。也许你需要指定你的工作表名称,因为你的excel可能有多张工作表,所以你要返回一个有序的dict,请尝试
[pd.read_excel(frame,sheet\u name='YOURSHEET')for frame in excels]
并将你的工作表更改为需要处理的工作表