我使用 PyQt 中的 QTableWidget
来展示一个 DataFrame
。我创建了一个 QTableWidgetObject
,然后使用 DataFrame
的值来创建 QTableWidgetItems
填充表格。
以下是读取 CSV 文件创建 DataFrame
并在 GUI 中展示的代码片段:
df = read_csv(filename, index_col = 0,header = 0)
self.datatable = QtGui.QTableWidget(parent=self)
self.datatable.setColumnCount(len(df.columns))
self.datatable.setRowCount(len(df.index))
for i in range(len(df.index)):
for j in range(len(df.columns)):
self.datatable.setItem(i,j,QtGui.QTableWidgetItem(str(df.iget_value(i, j))))
更新:
由于这个答案已经很旧了,它需要更新。现在有许多选项可用于在 GUI 中查看数据框。
- 正如其他人指出的那样,Python IDE(例如 Spyder)带有数据框查看器。
- qgrid 是另一种选项,可用于 Jupyter 笔记本小部件,该小部件在笔记本中呈现数据框。
如果有人仍然想编写一个简单的 GUI 在 Jupyter 中查看数据框,则以下是使用 Pyqt5 的完整、最小示例。
%gui qt5
from PyQt5.QtWidgets import QWidget,QScrollArea, QTableWidget, QVBoxLayout,QTableWidgetItem
import pandas as pd
win = QWidget()
scroll = QScrollArea()
layout = QVBoxLayout()
table = QTableWidget()
scroll.setWidget(table)
layout.addWidget(table)
win.setLayout(layout)
df = pd.DataFrame({"a" : [4 ,5, 6],"b" : [7, 8, 9],"c" : [10, 11, 12]},index = [1, 2, 3])
table.setColumnCount(len(df.columns))
table.setRowCount(len(df.index))
for i in range(len(df.index)):
for j in range(len(df.columns)):
table.setItem(i,j,QTableWidgetItem(str(df.iloc[i, j])))
win.show()
![输入图像描述](https://istack.dev59.com/edZpV.webp)