Python 3.x 如何推送LivePanda数据帧并对其进行索引以使其适合我的Tkinter表?

Python 3.x 如何推送LivePanda数据帧并对其进行索引以使其适合我的Tkinter表?,python-3.x,pandas,tkinter,Python 3.x,Pandas,Tkinter,我试图将mqtt数据推送到tkinter表中,该表是我使用模块创建的。我正在以列表的形式获取数据。因此,我首先创建了一个csv文件,并手动标记它。然后我把我的列表推到了csv文件中。因此,我的表中有两个部分,首先它将从我的csv文件中获取转换后的数据帧,类似于表的历史部分,然后我需要在其打开时将我最近的数据帧(与我以前的数据帧格式相同,csv文件的列索引作为我的数据帧列索引)推送到该表中。我还将最近的数据帧保存在csv文件中,这样每次我打开表格时,这个过程都可以循环。问题是我不知道哪里出了问题。

我试图将mqtt数据推送到tkinter表中,该表是我使用模块创建的。我正在以列表的形式获取数据。因此,我首先创建了一个csv文件,并手动标记它。然后我把我的列表推到了csv文件中。因此,我的表中有两个部分,首先它将从我的csv文件中获取转换后的数据帧,类似于表的历史部分,然后我需要在其打开时将我最近的数据帧(与我以前的数据帧格式相同,csv文件的列索引作为我的数据帧列索引)推送到该表中。我还将最近的数据帧保存在csv文件中,这样每次我打开表格时,这个过程都可以循环。问题是我不知道哪里出了问题。 这是我的表格脚本:

import tkinter as tk
import pandas as pd
from pandastable import Table, TableModel
from threading import Thread
import time
import datetime
import numpy as np
#import mqtt_cloud_rec
#import tkintermqtt

prevframe = pd.read_csv('mqttresult.csv')
class TestApp(tk.Frame):
        """Basic test frame for the table"""
        def __init__(self, parent=None):
            self.parent = parent
            tk.Frame.__init__(self)
            self.main = self.master
            self.main.geometry('800x600+200+100')
            self.main.title('Mqtt Result Table')
            f = tk.Frame(self.main)
            f.pack(fill=tk.BOTH,expand=1)
            #df = TableModel.getSampleData(rows=5)
            self.table = pt = Table(f, dataframe=prevframe, showtoolbar=True )
            pt.show()
            self.startbutton = tk.Button(self.main,text='START',command=self.start)
            self.startbutton.pack(side=tk.TOP,fill=tk.X)
            self.stopbutton = tk.Button(self.main,text='STOP',command=self.stop)
            self.stopbutton.pack(side=tk.TOP,fill=tk.X)
      #      self.table.showPlotViewer()            
            return


        def update(self,data):


            table=self.table              
            #plotter = table.pf
            #opts = plotter.mplopts
            #plotter.setOption('linewidth',3)
            #plotter.setOption('kind','line')
            #opts.widgets['linewidth'].set(3)
            #opts.widgets['kind'].set('line')

            date_today=str(datetime.date.today())
            time_today=time.strftime("%H:%M:%S")
            datalist=[date_today,time_today]+self.data
            datalist1=np.array(datalist)
            datalist2=pd.DataFrame(data=datalist1 ,columns=['Date','Time','power state','Motor state','Mode','Voltage','Current','Power Factor','KW','KWH','total Runtime'])

            #self.table = Table(dataframe=datalist2, showtoolbar=True )

            self.dataframe.loc[len(self.dataframe)]=datalist2
            table.model.df=self.dataframe
            table.redraw()

            #table.multiplecollist=range(0,10)

            #table.plotSelected()
            time.sleep(.1)
            if self.stop == True:
                return
            return

        def start(self):
            self.stop=False
            t = Thread(target=self.update)
            t.start()            

        def stop(self):
            self.stop = True
            return

app = TestApp()
#launch the app
app.mainloop()

将其转换为字典而不是数据帧,我认为它会起作用:

datalist=[date_today,time_today]+self.data
datalist1=np.array(datalist)
datalist2=pd.DataFrame(data=datalist1 ,columns=['Date','Time','power state','Motor state','Mode','Voltage','Current','Power Factor','KW','KWH','total Runtime'])

我试过这样的东西,但没用。我说的是个错误。ValueError:如果使用所有标量值,则必须传递索引