簡體   English   中英

如何從python中的兩個文件夾導入Excel文件

[英]how to import excel files from two folders in python

我最初有一個用於合並一個文件夾中文件的代碼。 但是,這項工作擴展到可以合並兩個文件夾中的文件。 我編輯了代碼,以首先在兩個文件夾中添加文件列表。 該部分正在工作,但在實際的for循環部分中將不起作用。 我認為這可能是由於當前的工作目錄,但我不知道如何更改該部分。 到目前為止,這是我的代碼:

files1 = os.listdir(folder1) #i just replaced the path with folder1
files2 = os.listdir(folder2) #i just replaced the path with folder2
files = files1 + files2

df = pd.DataFrame()         #creating an empty dataframe
for f in files:             #for loop in extracting and merging the files
    data = pd.read_excel(f)  
    df = df.append(data, sort=False).reset_index(drop=True) 

我建議您稍微修改一下代碼設計。 列出所有文件夾並對其進行迭代,然后在循環中加載文件。 您可以根據需要在任意數量的文件夾中使用此代碼

import os
from pathlib import Path

def merge_files_in_folder(folder):
    df = pd.DataFrame()

    for excel_file in os.listdir(folder):
        data = pd.read_excel(folder / excel_file)
        df = df.append(data, sort=False).reset_index(drop=True)

    return df


folders = ['folder1', 'folder2']
df = pd.DataFrame()

for folder in folders:
    data = merge_files_in_folder(Path(folder))
    df = df.append(data, sort=False).reset_index(drop=True) 

我們可以通過在文件名中添加文件夾名稱來修復此代碼:

import os
import pandas as pd

folder1 = 'folder1/'
folder2 = 'folder2/'

files1 = ["{}{}".format(folder1,file) for file in os.listdir(folder1)]
files2 = ["{}{}".format(folder2,file) for file in os.listdir(folder2)]
files = files1 + files2

print(files)

df = pd.DataFrame()         #creating an empty dataframe
for f in files:             #for loop in extracting and merging the files
    data = pd.read_excel(f)  
    df = df.append(data, sort=False).reset_index(drop=True) 

並將其移至輔助功能,如Alex所建議的那樣,以使代碼更好。

編輯:具有輔助功能的代碼:

import os
import pandas as pd

def listdir_fullpath(d):
    return [os.path.join(d, f) for f in os.listdir(d)]

folder1 = 'folder1/'
folder2 = 'folder2/'

files1 = listdir_fullpath(folder1)
files2 = listdir_fullpath(folder2)
files = files1 + files2

print(files)

df = pd.DataFrame()         #creating an empty dataframe
for f in files:             #for loop in extracting and merging the files
    data = pd.read_excel(f)  
    df = df.append(data, sort=False).reset_index(drop=True) 

您說對了:“ os.listdir”僅列出定義的文件夾中文件的文件名( Python 3 Documentation )。

由於os.listdir返回一個列表,因此您可以使用一個輔助函數( 例如 )在每個列表項的路徑之前添加路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM