code: def max_min_col_update(self):
          
          if self.df.shape[0] == 0: # If no rows to compute max/min then return
              return
          self.max_min_col = []
          for dummy, col in self.df.iteritems():
              if col.dtype in REAL_NUMBER_TYPES + COMPLEX_NUMBER_TYPES:
                  if col.dtype in REAL_NUMBER_TYPES:
                      vmax = col.max(skipna=True)
                      vmin = col.min(skipna=True)
                  else:
                      vmax = col.abs().max(skipna=True)
                      vmin = col.abs().min(skipna=True)
                  if vmax != vmin:
                      max_min = [vmax, vmin]
                  else:
                      max_min = [vmax, vmin - 1]
              else:
                  max_min = None
              self.max_min_col.append(max_min)
docs: Determines the maximum and minimum number in each column.
  
          The result is a list whose k-th entry is [vmax, vmin], where vmax and
          vmin denote the maximum and minimum of the k-th column (ignoring NaN). 
          This list is stored in self.max_min_col.
  
          If the k-th column has a non-numerical dtype, then the k-th entry
          is set to None. If the dtype is complex, then compute the maximum and
          minimum of the absolute values. If vmax equals vmin, then vmin is 
          decreased by one.