如何在5个不同的文件夹中合并5个具有相同名称的Excel文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在5个不同的文件夹中合并5个具有相同名称的Excel文件?相关的知识,希望对你有一定的参考价值。
import pandas as pd
from pandas import ExcelWriter
import os
d1 = "D:master concordiaDYDEcobee DYDcanadayCanada 2015"
d2 = "D:master concordiaDYDEcobee DYDcanadayCanada 2016"
d3 = "D:master concordiaDYDEcobee DYDcanadayCanada 2017"
d4 = "D:master concordiaDYDEcobee DYDcanadayCanada 2018"
d5 = "D:master concordiaDYDEcobee DYDcanadayCanada 2019"
output_dir = "D:master concordiaDYDEcobee DYDcanaday
ew"
files_2015= os.listdir(d1)
files_2016= os.listdir(d2)
files_2017= os.listdir(d3)
files_2018= os.listdir(d4)
files_2019= os.listdir(d5)
我有5个文件夹,其中包含800个excel文件,每个文件夹中excel文件的名称相同,我想创建一个循环,以便将5个具有相同名称的excel文件合并为一个文件。有人可以帮我吗?
答案
我没有安装熊猫,因此虽然这不能回答您的整个问题,但确实显示了如何从每个目录中获取具有相同名称的相应文件组。
请注意,出于测试目的,我缩短了文件夹路径。
from contextlib import contextmanager
from glob import iglob
#import pandas as pd
#from pandas import ExcelWriter
import os
@contextmanager
def multi_file_manager(files, mode='r'):
""" Open multiple files and make sure they all get closed. """
files = [open(file, mode) for file in files]
yield files
for file in files:
file.close()
root = "Ecobee DYD"
folder_names = ("Canada 2015", "Canada 2016", "Canada 2017", "Canada 2018", "Canada 2019")
folder_paths = [os.path.join(root, folder, "*.xlsx") for folder in folder_names]
folder_iters = [iglob(folder_path) for folder_path in folder_paths]
while True:
try:
xl_files = [next(iter) for iter in folder_iters]
#print(xl_files)
with multi_file_manager(xl_files) as inp_files:
# Combine group of open files in inp_files.
pass
except StopIteration:
break
另一答案
使用python标准库中的pathlib
。
from pathlib import Path
import pandas as pd
我们可以使用rglob
递归搜索目录树以查找与模式匹配的所有文件
folder_to_search = 'D:master concordiaDYDEcobee DYDcanada'
pat_ = 'ffb034be30cd9b2d19e8f443b6232db74a270d4c'
all_excels = [f for f in Path(folder_to_search).rglob(f'*{pat_}*.xlsx')]
然后,我们需要将它们合并为一个熊猫数据框,请记住excel文件的形状必须相同才能获得标准数据框。
dfs = [pd.read_excel(f,sheet_name='Sheet1') for f in all_excels]
df = pd.concat(df)
有关Pathlib的更多信息,请点击https://realpython.com/python-pathlib/
以上是关于如何在5个不同的文件夹中合并5个具有相同名称的Excel文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用 SAX 解析器,如何解析具有相同名称标签但元素不同的 xml 文件?