code: def startDrag(self, index):
          
  
          if not index.isValid():
              return
          
          dataFrame = self.model().dataFrame()
  
          # get all infos from dataFrame
          dfindex = dataFrame.iloc[[index.row()]].index
          columnName = dataFrame.columns[index.column()]
          dtype = dataFrame[columnName].dtype
          value = dataFrame[columnName][dfindex]
  
          # create the mime data
          mimePayload = PandasCellPayload(
              dfindex,
              columnName,
              value,
              dtype,
              hex(id(self.model()))
          )
          mimeData = MimeData()
          mimeData.setData(mimePayload)
                  
          # create the drag icon and start drag operation
          drag = QtGui.QDrag(self)
          drag.setMimeData(mimeData)
          pixmap = QtGui.QPixmap(":/icons/insert-table.png")
          drag.setHotSpot(QtCore.QPoint(pixmap.width()/3, pixmap.height()/3))
          drag.setPixmap(pixmap)
          result = drag.start(Qt.MoveAction)
docs: start a drag operation with a PandasCellPayload on defined index.
          
          Args:
              index (QModelIndex): model index you want to start the drag operation.