python - PyQT / Pandas - 更新表格小部件数据的最快方法
问题描述
假设我有一个 pandas 数据框df
(或字典),例如:
col1 col2 col3
0 A A 0
1 A B 0
2 C A 1
3 B C 0
4 A E 1
tableWidget
还有一个有 2 列的 QTableWidget :
col1 col2
0 A A
1 A B
2 C A
3 B C
4 A E
通过遍历每个 QTableWidgetItem,我可以tableWidget
根据数据框中的行值更新每行和单元格的颜色格式。col3
例如,要更改行 where 的背景颜色col3 == 1
,我可以执行以下操作:
row_count = len(data)
tableWidget.setRowCount(row_count)
for i in range(row_count):
row = df.iloc[i]
cell1 = row['col1']
cell2 = row['col2']
cell3 = row['col3']
item = QtWidgets.QTableWidgetItem(cell1)
if cell3 == 1:
item.setForeground(QtGui.QColor('red'))
tableWidget.setItem(i, 0, item)
item = QtWidgets.QTableWidgetItem(cell2)
if cell3 == 1:
item.setForeground(QtGui.QColor('red'))
tableWidget.setItem(i, 1, item)
然而,这是非常缓慢的。对于 2,000 行的数据框,更新表格小部件可能需要很长时间。有没有更快(更好)的方法来更新基于值数据集的表格小部件项目的属性,而不是循环遍历每一行和单元格?也许通过将格式值字典传递给 TableWidget?
解决方案
推荐阅读
- python - 在python中生成一个不包括某些特殊字符的随机字符串
- javascript - 查询未在变量中产生结果
- python-2.7 - Pip2错误:找不到满足要求tensorboard<1.15.0,>=1.14.0的版本
- node.js - 依次执行节点应用程序中收到的 webhook
- kubernetes - 无法使用入口连接到 pod
- php - Woocommerce - 伙计们,我正在尝试显示 3 个随机产品,但跳过了前 3 个最近添加的产品
- php - 没有 Angular 或 React 的混合应用程序开发
- c# - 无法设置公共文本 = 公共字符串 []
- android - Android所有活动中的浮动弹出窗口
- pip - 如何修复“枕头上的 pip 安装错误”