从Pandas数据框填充QTableView的最快方法

我是PyQt的新手,正在努力填充QTableView控件

我的代码如下:

定义数据帧到用户界面(自身,数据帧):
"""
在GUI中显示数据帧
"""
list_model=QtGui.QStandardItemModel()
i=0
对于data_frame.columns中的val:
#对于列表模型
如果我>0:
item=QtGui.QStandardItem(val)
#item.setCheckable(真)
item.setEditable(False)
列表\模型附录行(项目)
i+=1
self.ui.profilesListView.setModel(列表\模型)
#对于表格模型
表_model=QtGui.QStandardItemModel()
#设置表格标题
表\u model.setColumnCount(数据\u frame.columns.size)
表\u model.setHorizontalHeaderLabels(数据\u frame.columns.tolist())
self.ui.profileTableView.horizontalHeader().setStretchLastSection(True)
#填充表模型数据
对于范围(10)中的行idx:#len(数据帧值)
行=列表()
对于范围内的列idx(数据帧.列.大小):
val=QtGui.QStandardItem(str(数据帧值[行idx][列idx]))
行追加(val)
表\u模型附录行(行)
#将表格模型设置为表格对象
self.ui.profileTableView.setModel(表\模型)

实际上,在代码中,我成功地填充了QListView,但没有显示我设置为QTableView的值,您还可以看到,我将行截断为10,因为显示数据帧的数百行需要花费很长时间

那么,从pandas数据框填充表模型的最快方法是什么

提前谢谢

就我个人而言,我只需要创建自己的模型类,以使处理变得更加简单

例如:

导入系统
从PyQt4导入QtCore、QtGui
Qt=QtCore.Qt
类PandasModel(QtCore.QAbstractTableModel):
def uuu init uuu(self,data,parent=None):
QtCore.QAbstractTableModel.\uuuu init\uuuu(self,parent)
self.\u data=数据
def行数(自身,父项=无):
返回长度(自身数据值)
def columnCount(自身,父项=无):
返回self.\u data.columns.size
def数据(self,index,role=Qt.DisplayRole):
如果index.isValid():
如果角色==Qt.DisplayRole:
返回QtCore.QVariant(str(
self._data.iloc[index.row()][index.column()]))
返回QtCore.QVariant()
如果uuuu name uuuuuu=’\uuuuuuu main\uuuuuuu’:
application=QtGui.QApplication(sys.argv)
view=QtGui.QTableView()
模型=PandaModel(您的熊猫数据)
view.setModel(model)
view.show()
sys.exit(application.exec_389;()

发表评论