【问题标题】:Python reading data from different directories and merging into one excel filePython从不同目录读取数据并合并到一个excel文件中
【发布时间】:2021-06-25 15:25:56
【问题描述】:

我只是 python 的初学者。现在尝试使用 python 来合并来自不同目录的 excel 文件。

我有一个如下所示的代码。但是,执行时只读取一个文件,而其他 2 个文件不会合并到最终的 excel 文件中。我应该在哪里更改代码?

提前感谢您的帮助。

真诚的 凯雷姆

import glob
import pandas as pd
import os

#path = r'E:\Users\KEREMH\.spyder-py3\20210326GecikmedekiMusteriler'

subelistesi = ['1140','1150','1190']

klasor_adi= input('Klasör Adı: ')
gonderilen ='gonderilen'

for sube in subelistesi:

    path = os.path.join(os.getcwd(), sube, klasor_adi, gonderilen )

    filenames = glob.glob(path +  "/*.xlsx")
    
    print(filenames)

for file in filenames:

    concat_all_sheets_all_files = pd.DataFrame()

    df = pd.read_excel(file, sheet_name=None, skiprows=None,nrows=None,usecols=None,header=None,index_col=None)
    concat_all_sheets_single_file = pd.concat(df,sort=False)
    concat_all_sheets_single_file['filename']=os.path.basename(file)
    concat_all_sheets_all_files = concat_all_sheets_all_files.append(concat_all_sheets_single_file)
  
         
writer = pd.ExcelWriter(r'E:\Users\KEREMH\.spyder-py3\Konsolide.xlsx')
concat_all_sheets_all_files.to_excel(writer)
writer.save()
print(concat_all_sheets_all_files)

【问题讨论】:

    标签: pandas error-handling merge concatenation glob


    【解决方案1】:

    循环遍历subelistesi 时,仅保留filenames 的最后一个值。更好的方法是在任何循环之前创建一个列表,并将所有数据帧添加到其中,然后在完成循环后连接。

    import glob
    import pandas as pd
    import os
    
    #path = r'E:\Users\KEREMH\.spyder-py3\20210326GecikmedekiMusteriler'
    
    subelistesi = ['1140','1150','1190']
    
    klasor_adi= input('Klasör Adı: ')
    gonderilen ='gonderilen'
    
    all_dfs = [] # new list here
    
    for sube in subelistesi:
    
        path = os.path.join(os.getcwd(), sube, klasor_adi, gonderilen )
    
        filenames = glob.glob(path +  "/*.xlsx")
        
        print(filenames)
    
        for file in filenames:
    
            concat_all_sheets_all_files = pd.DataFrame()
    
            df = pd.read_excel(file, sheet_name=None, skiprows=None,nrows=None,usecols=None,header=None,index_col=None)
            df['filename'] = os.path.basename(file)
            all_dfs.append(df)
            
    
    concat_all_sheets_all_files = pd.concat(all_dfs, axis=0)
    
             
    writer = pd.ExcelWriter(r'E:\Users\KEREMH\.spyder-py3\Konsolide.xlsx')
    concat_all_sheets_all_files.to_excel(writer)
    writer.save()
    print(concat_all_sheets_all_files)
    

    【讨论】:

    • 感谢您的帮助,不胜感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多