从多个Excel文件创建Pandas数据框架



嗨,这个问题和这个几乎一模一样:

从多个文件创建pandas数据框架

只是我想从Excel文件列表中读取数据。我有一个名为"文件名"的文件名列表,我想将它们合并到一个数据帧中。

我的代码是:

import tkinter as tk
import pandas as pd
import tkinter.messagebox as tr 
from tkinter.filedialog import askopenfilename      
LARGE_FONT = ("Verdana", 12)
class BlahTest(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        self.frames = {}
        frame = StartPage(container, self)
        self.frames[StartPage] = frame
        frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(StartPage)
    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()
class StartPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)
        label = tk.Label(self, text="Add files to start compiling your report", font=LARGE_FONT)
        label.pack(pady=10,padx=10)
         button1 = tk.Button(self, text="Add Files", command=FileOperations.openFile)
        button1.pack()
 class FileOperations():
     def openFile():
        options = {}
    options['initialdir'] = 'C:\Users\Blah'
    options['filetypes'] = [('Excel files', '.xlsx')]
    options['multiple'] = 1
    global filenames
    filenames = tk.filedialog.askopenfilename(**options)
    if len(filenames) == 8: #checks if the user has selected exactly 8 files else shows errormessage
        PandasOperations.MergetoSingleDF
    else:
        tr.showerror("Wrong number of files","There should be exactly 8 files")
class PandasOperations():
def MergetoSingleDF():
    df_list = [pd.read_excel((file), sheetname=0) for file in filenames]
    big_df = pd.Dataframe()
    big_df = pd.concat(df_list)
    big_df
    writer = pd.ExcelWriter('C:\Users\Blah.xlsx', engine = 'xlsxwriter')
    big_df.to_excel(writer, sheet_name='Patch Summary by Server Report', index=False)
    workbook = writer.book
    worksheet = writer.sheets['Patch Summary by Server Report']
    writer.save()

app = BlahTest()
app.mainloop()

我的代码应该:-获得8个Excel文件的列表-将每个Excel文件加载到相应的数据框中,这些数据框存储在一个新的列表中-将所有的数据框合并为一个数据框——打印出新的大数据框架-将新的大数据帧保存到Excel文件

很抱歉,它没有给我任何错误信息-它似乎没有打印数据栏或将其保存到Excel中。

如有任何帮助,不胜感激

你的意思是说PandasOperations(). mergetosingledf()而不是PandasOperations吗?合并singledf,就像你现在写的那样?此外,你的类成员函数,如def MergeToSingleDF()应该接受self作为第一个参数。

最新更新