def get_df_actuals_clean(df_actuals, source, source_long):
    """
    Convert an actuals dataframe to a clean format

    :param df_actuals: dataframe in normalized format, with columns y and
        optionally x, date, weight
    :type df_actuals: pandas.DataFrame
    :param source: source identifier for this time series
    :type source: basestring
    :param source_long: long-format source identifier for this time series
    :type source_long: basestring
    :return: clean actuals dataframe
    :rtype: pandas.DataFrame
    """
    # Add actuals as entries in result dicts
    df_actuals = df_actuals.copy()  # .rename_axis('date')
    if 'date' not in df_actuals.columns:
        df_actuals = df_actuals.rename({'x': 'date'}, axis=1)
    df_actuals = df_actuals[[c for c in [
        'date', 'weight', 'y'] if c in df_actuals.columns]]

    df_actuals['model'] = 'actuals'
    df_actuals['source'] = source
    df_actuals['source_long'] = source_long
    df_actuals['is_actuals'] = True
    if 'weight' not in df_actuals.columns:
        df_actuals['weight'] = 1.0
    return df_actuals