def METHOD_NAME(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.tobytes()))
            arrays.append(arr.tobytes())
        except Exception as e:
            typ = infer_dtype(df[c], skipna=False)
            msg = "Column '{}' type is {}".format(str(c), typ)
            logging.warning(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