#python #pandas #dataframe #pyqt #pyqt5
#python #панды #фрейм данных #pyqt #pyqt5
Вопрос:
Я хочу отобразить фрейм данных в Pyqt5. Однако я получаю сообщение об ошибке типа ‘Процесс завершен с кодом выхода -1073740791 (0xC0000409)’
Откройте csv-файл с pandas
csv_path = os.path.expanduser("~/Desktop/dataset/traffic-crashes-vehicles-1.csv")
datac = pd.read_csv(csv_path)
class pandasModel(QAbstractTableModel):
def __init__(self,data):
QAbstractTableModel.__init__(self)
self._data = data
def rowCount(self,parent=None):
return self._data.shape[0]
def columnCount(self,parent=None):
return self._data.shape[1]
def data(self, index, role=Qt.DisplayRole):
if index.isValid():
if role == Qt.DisplayRole:
return str(self._data.iloc[index.row(),index.column()])
return None
функция, вызывающая функцию данных заголовка проблемы. Параметры
после self отображаются желтым цветом. PyCharm. Что-то кажется отсутствующим или
неидентифицируемым.
def headerData(self,orientation, role,col):
if orientation == Qt.Horizantal and role == Qt.DisplayRole:
return self._data.columns[col]
return None
if __name__ == '__main__':
app = QApplication(sys.argv)
model = pandasModel(datac)
view = QTableView()
view.setModel(model)
view.resize(800,600)
view.show()
sys.exit(app.exec())
Ответ №1:
Я заменил col на seciton. Я напечатал этот раздел, и он работал так же, как и количество столбцов, и напечатал числовое значение. Я понял, что раздел подсчитывает столбцы. Чтобы получить столбцы из фрейма данных, я написал цикл for и добавил раздел. И теперь появляются имена моих столбцов.
def headerData(self, section, orientation, role=Qt.DisplayRole):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return datac.columns[section]
return QAbstractTableModel.headerData(self, section, orientation, role)