code: def addDataFrameColumn(self, columnName, dtype=str, defaultValue=None):
          
          if not self.editable or dtype not in SupportedDtypes.allTypes():
              return False
  
          elements = self.rowCount()
          columnPosition = self.columnCount()
  
          newColumn = pandas.Series([defaultValue]*elements, index=self._dataFrame.index, dtype=dtype)
  
          self.beginInsertColumns(QtCore.QModelIndex(), columnPosition - 1, columnPosition - 1)
          try:
              self._dataFrame.insert(columnPosition, columnName, newColumn, allow_duplicates=False)
          except ValueError as e:
              # columnName does already exist
              return False
  
          self.endInsertColumns()
  
          self.propagateDtypeChanges(columnPosition, newColumn.dtype)
  
          return True
docs: Adds a column to the dataframe as long as
          the model's editable property is set to True and the
          dtype is supported.
  
          :param columnName: str
              name of the column.
          :param dtype: qtpandas.models.SupportedDtypes option
          :param defaultValue: (object)
              to default the column's value to, should be the same as the dtype or None
          :return: (bool)
              True on success, False otherwise.