code: def Insert(self, key, value, row_index):
          
          if row_index < 0:
              row_index += len(self)
  
          if not 0 <= row_index < len(self):
              raise IndexError('Index "%s" is out of bounds.' % row_index)
  
          new_row = Row()
          for idx in self.header:
              if self.index(idx) == row_index:
                  new_row[key] = value
              new_row[idx] = self[idx]
          self._keys = new_row.header
          self._values = new_row.values
          del new_row
          self._BuildIndex()
docs: Inserts new values at a specified offset.
  
      Args:
        key: string for header value.
        value: string for a data value.
        row_index: Offset into row for data.
  
      Raises:
        IndexError: If the offset is out of bands.