簡體   English   中英

導入多個excel文件合並成dataframe

[英]Importing multiple excel files and combining into dataframe

我正在嘗試將許多 excel 文件(大約 400 個)從一個文件夾導入一個 dataframe,但我似乎遇到了錯誤。

我想要從我的文件夾中獲取的文件名稱為文件名,后跟日期 - “filename_yyyy_mm_dd.xlsx”。

我想保留 header,因為這些文件在不同日期都有相同的列。

我當前的代碼是:

import glob
import pandas as pd
import os


path = r"C:\Users\..."

my_files = glob.glob(os.path.join(path, "filename*.xlsx"))

file_li = []

for filename in my_files:
    df = pd.read_excel(filename, index_col=None, header=1)
    file_li.append(df)
    
frame = pd.concat(file_li, axis=0, ignore_index=True)

當我調用我的框架時,我沒有得到任何回應? 我調用文件名的方式有問題嗎?

更新:

我的 excel 文件如下所示:

第 1 列 第 2 欄 第 3 欄 第 4 列 第 5 欄 第 6 列 第 7 欄 第 8 列 第 9 欄 第 10 欄 第 11 欄 第 12 欄 第 13 欄 第 14 欄
日期 SREC-MD SREC 2月25日 MDX F 85 0 0 8086 02/25/2025 20107

大約有 300-400 行。

我的 output 已經捕獲了 14 列,但它添加了更多,因為 frame.info() 顯示我有 922 列。

更新 2:

輸出截圖

除了使用 concat,您可以嘗試將文件讀入 df,然后使用 mode='a' 將它們 append 合並為一個組合 csv。 然后讀取組合csv。

for filename in my_files:
       df = pd.read_excel(filename, index_col=None, header=1)
       df.to_csv('combined.csv', mode='a', header=False)


df = pd.read_csv('combined.csv')

很難說為什么你會得到額外的列,但你可以試試這個:

import glob
import pandas as pd
import os


path = r"C:\Users\..."

my_files = glob.glob(os.path.join(path, "filename*.xlsx"))

file_li = []

for filename in my_files:
    df = pd.read_excel(filename, index_col=None, header=None)
    file_li.append(df)
    
frame = (
            pd.concat(file_li, axis=0, ignore_index=True)
                .dropna(how="all") #to get rid of the eventual extra rows abobe each header
                .drop_duplicates() #to get rid of the cumulated duplicated headers
                .T.set_index(0).T #to make the first row as header of the dataframe
        )

但是,我建議您檢查與您的電子表格相比, frame中是否有任何缺失的行。

暫無
暫無

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

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