前言
提示:这里可以添加本文要记录的大概内容:
在大数据处理时,我们往往需要将pandas的dataframe用pyqt展示出来,这里提供一个简单的参考类,来帮助大家。
一、具体思路
获取dataframe的行和列,然后遍历dataframe,把其数据放到QTableView()中。
二、实现代码
代码如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import numpy as np
import pandas as pd
class QDataTable(QWidget):
"""
@MethodName: QDataTable
@Description: 用来接纳数据的数据表,在显示窗口显示
@CalledBy:pyqtflowchart的QtreeWidegt
@return: result_a
@rtype: int
"""
def __init__(self, data, parent=None):
super(QDataTable, self).__init__(parent)
# 设置初始大小
self.resize(500, 300)
# 获取dataframe的行列
self.model = QStandardItemModel(data.shape[0], data.shape[1])
# 设置水平方向的标头内容
self.model.setHorizontalHeaderLabels(data.columns.values)
for row in range(data.shape[0]):
for column in range(data.shape[1]):
sss = data[data.columns.values[column]][data.index.values[row]]
sss = str(sss)
item = QStandardItem(sss)
# 设置每个位置的文本值
self.model.setItem(row, column, item)
# 实例化表格视图,设置模型为自定义的模型
self.tableView = QTableView()
self.tableView.setModel(self.model)
# 设置它不能被编辑
self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers)
# 水平方向标签拓展剩下的窗口部分,填满表格
self.tableView.horizontalHeader().setStretchLastSection(True)
# 水平方向,表格大小拓展到适当的尺寸
self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# 设置布局
layout = QVBoxLayout()
layout.addWidget(self.tableView)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
a = pd.DataFrame(np.arange(18).reshape(3, 6), index=['a', 'b', 'c'], columns=['A', 'B', 'C', 'D', 'E', 'F'])
data = a
table = QDataTable(data)
table.show()
sys.exit(app.exec_())
总结
使用的时候,直接往QDataTable类里面传一个自己的dataframe就行。
原文地址:https://blog.csdn.net/garbagerofsuct/article/details/125603543
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_6933.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。