Python 将多个xlsx文件合并为一个
在一个目录中,我有几个xlsx文件,我想把它们放在一个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
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]
并将你的工作表更改为需要处理的工作表