code: def setDataFrame(self, dataFrame, copyDataFrame=False, filePath=None):
          
          if not isinstance(dataFrame, pandas.core.frame.DataFrame):
              raise TypeError("not of type pandas.core.frame.DataFrame")
  
          self.layoutAboutToBeChanged.emit()
          if copyDataFrame:
              self._dataFrame = dataFrame.copy()
          else:
              self._dataFrame = dataFrame
  
          self._columnDtypeModel = ColumnDtypeModel(dataFrame)
          self._columnDtypeModel.dtypeChanged.connect(self.propagateDtypeChanges)
          self._columnDtypeModel.changeFailed.connect(
              lambda columnName, index, dtype: self.changingDtypeFailed.emit(columnName, index, dtype)
          )
          if filePath is not None:
              self._filePath = filePath
          self.layoutChanged.emit()
          self.dataChanged.emit()
          self.dataFrameChanged.emit()
docs: Setter function to _dataFrame. Holds all data.
  
          Note:
              It's not implemented with python properties to keep Qt conventions.
  
          Raises:
              TypeError: if dataFrame is not of type pandas.core.frame.DataFrame.
  
          Args:
              dataFrame (pandas.core.frame.DataFrame): assign dataFrame to _dataFrame. Holds all the data displayed.
              copyDataFrame (bool, optional): create a copy of dataFrame or use it as is. defaults to False.
                  If you use it as is, you can change it from outside otherwise you have to reset the dataFrame
                  after external changes.