code: def insert_column(self, name, data, colnum=None):
          
  
          if name in self._colnames:
              raise ValueError("column '%s' already exists" % name)
  
          if IS_PY3 and data.dtype.char == 'U':
              # fast dtype conversion using an empty array
              # we could hack at the actual text description, but using
              # the numpy API is probably safer
              # this also avoids doing a dtype conversion on every array
              # element which could b expensive
              descr = numpy.empty(1).astype(data.dtype).astype('S').dtype.descr
          else:
              descr = data.dtype.descr
  
          if len(descr) > 1:
              raise ValueError("you can only insert a single column, "
                               "requested: %s" % descr)
  
          this_descr = descr[0]
          this_descr = [name, this_descr[1]]
          if len(data.shape) > 1:
              this_descr += [data.shape[1:]]
          this_descr = tuple(this_descr)
  
          name, fmt, dims = _npy2fits(
              this_descr,
              table_type=self._table_type_str)
          if dims is not None:
              dims = [dims]
  
          if colnum is None:
              new_colnum = len(self._info['colinfo']) + 1
          else:
              new_colnum = colnum+1
          self._FITS.insert_col(self._ext+1, new_colnum, name, fmt, tdim=dims)
          self._update_info()
  
          self.write_column(name, data)
docs: Insert a new column.
  
          parameters
          ----------
          name: string
              The column name
          data:
              The data to write into the new column.
          colnum: int, optional
              The column number for the new column, zero-offset.  Default
              is to add the new column after the existing ones.
  
          Notes
          -----
          This method is used un-modified by ascii tables as well.