将多个xlsx文件合并为一个

时间:2019-12-10 14:55:13

标签: 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('final_table.xlsx')

我以前的excell带有标头,我想保留它们,因为使用此代码,我没有得到标头,并且信息混杂在一起。

2 个答案:

答案 0 :(得分:2)

尝试一下:

例如,如果您有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')

答案 1 :(得分:0)

其他人已经注意到您的all_data应该在您的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)