def preprocess_SED_data(df, drop_cols, drop_0=True, drop_missing=True):
    """
    Standard preprocessing procedure if SED data follows the format of
    experimental datasets:
    Drop the unwanted columns, samples' energy consumption with 0 or/and
    samples with missing values if set True.

    Parameters
    ----------
    df : DataFrame
        Economic dataset, with prediction columns:['SiteEUIWN(kBtu/sf)',
        'SourceEUIWN(kBtu/sf)']
    drop_cols : str or list of strs
        Columns to drop/delete.
    drop_0/drop_missing : bool , default True
        Rows to drop/delete.

    Returns
    -------
    df_p : DataFrame
        Proprocessed SED Dataset.
    """
    zero_mask = (df['SiteEUIWN(kBtu/sf)']==0) | (df['SourceEUIWN(kBtu/sf)']==0)
    df_p = df[~zero_mask]
    df_p.drop(drop_cols, axis=1, inplace=True)
    df_p.dropna(inplace=True)
    return df_p