docs: def docify(self, df):
          """
          Convert a Pandas DataFrame to SON.
  
          Parameters
          ----------
          df:  DataFrame
              The Pandas DataFrame to encode
          """
          dtypes = {}
          masks = {}
          lengths = {}
          columns = []
          data = Binary(b'')
          start = 0
  
          arrays = []
          for c in df:
              try:
                  columns.append(str(c))
                  arr, mask = self._convert_types(df[c].values)
                  dtypes[str(c)] = arr.dtype.str
                  if mask is not None:
                      masks[str(c)] = Binary(compress(mask.tostring()))
                  arrays.append(arr.tostring())
              except Exception as e:
                  typ = infer_dtype(df[c], skipna=False)
                  msg = "Column '{}' type is {}".format(str(c), typ)
                  logging.info(msg)
                  raise e
  
          arrays = compress_array(arrays)
          for index, c in enumerate(df):
              d = Binary(arrays[index])
              lengths[str(c)] = (start, start + len(d) - 1)
              start += len(d)
              data += d
  
          doc = SON({DATA: data, METADATA: {}})
          doc[METADATA] = {COLUMNS: columns,
                           MASK: masks,
                           LENGTHS: lengths,
                           DTYPE: dtypes
                           }
  
          return doc