Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandastable将新列添加到现有数据帧_Python_Pandas_Tkinter - Fatal编程技术网

Python Pandastable将新列添加到现有数据帧

Python Pandastable将新列添加到现有数据帧,python,pandas,tkinter,Python,Pandas,Tkinter,我试图在脚本中使用pandastable库。基本上,下面的脚本将用户选择的.csv导入到pandastable中,并在tkinterGUI上正确显示 一旦导入,我想添加列。我认为使用这个文档及其列出的表方法很容易做到这一点。例如:table.autoAddColumns(1)添加单个列,但是无论我如何尝试使用它,我都无法让它工作 import csv import tkinter as tk import tkinter.ttk as tkrttk from tkinter import * f

我试图在脚本中使用
pandastable
库。基本上,下面的脚本将用户选择的
.csv
导入到
pandastable
中,并在
tkinter
GUI上正确显示

一旦导入,我想添加列。我认为使用这个文档及其列出的表方法很容易做到这一点。例如:
table.autoAddColumns(1)
添加单个列,但是无论我如何尝试使用它,我都无法让它工作

import csv
import tkinter as tk
import tkinter.ttk as tkrttk
from tkinter import *
from tkinter import filedialog

import pandas as pd
from pandastable import Table, TableModel
from PIL import Image, ImageFont, ImageTk

root = tk.Tk()
root.geometry("2000x1000")
root.title('Workshop Manager')
style = tkrttk.Style()
style.configure("Treeview.Heading", foreground='Red', font=('Helvetica', 10))


def select_input_file():
    global input_file_path
    input_file_path = filedialog.askopenfilename(
    filetypes=(("CSV files", "*.csv"),))
    app = TestApp(root, input_file_path)
    app.place(bordermode = INSIDE,height = 500, width = 2000, x =0, y=50)

class TestApp(tk.Frame):
     def __init__(self, parent, input_file_path):
        super().__init__(parent)
        self.table = Table(self, showtoolbar=False, showstatusbar=False)
        self.table.importCSV(input_file_path)
        self.table.show(input_file_path)
        ##Breaks here##
        self.table.autoAddColumns(1)

root.mainloop()
我尝试过使用
table.autoAddColumns(1)
。这也不管用

如果我使用
self.table.autoAddColumns(1)
我会得到错误
AttributeError:“TableModel”对象没有属性“auto\u AddColumns”


如果我使用
table.autoAddColumns(1)
我会得到错误
name错误:没有定义名称“table”
这是
pandastable
中的一个错误


但是,您可以使用
addColumn()
函数代替。无参数调用时,将显示一个对话框,选择
dtype
并输入新列的名称。

这是
pandastable
中的一个错误。啊,谢谢您提供的信息。也许最好放弃pandastable库,继续使用pandas。您可以使用
addColumn()
函数,但它也有一个bug,可以通过修补模块源代码轻松修复。再次感谢您提供的信息,我以前从未修补过模块,您能为我指出正确的方向吗。。cheers将
pandatable
模块的
core.py
中的行
def addColumn(self,newname=None)
更改为
def addColumn(self,newname='None',dtype='object')
。请注意,如果您升级该模块并且该模块仅在Python环境中工作,那么它将被覆盖。或者您可以只调用
self.table.addColumn()
,而不传递任何参数,然后将要求您选择
dtype
并输入新列的名称。在这种情况下,不需要修补源代码。