Каково решение ошибки ‘-1073740791 (0xC0000409)’ в pyqt5?

#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)