def make_long()

in sig-contributor-experience/surveys/k8s_survey_analysis/plot_utils.py [0:0]


def make_long(data, facets, multi_year=False):
    """Converts a wide dataframe with columns for each topic's rating into a long dataframe

    Args:
        data (pandas.DataFrame): A wide dataframe
        facets (list): List of columns to keep as their own column
        mulit_year (bool, optional) Defaults to False. If True, add the "year" column to the list of facets

    Returns:
        (pandas.DataFrame): Long dataframe 

    """

    facets = copy(facets)
    if multi_year:
        facets.append("year")
    long_data = data.set_index(facets, append=True).stack().reset_index()

    # Rename so Level_0 always has the values of the topic we are interested in
    long_data = long_data.rename(
        columns={
            "level_0": "level_1",
            "level_4": "level_0",
            "level_3": "level_0",
            "level_2": "level_0",
            0: "rating",
        }
    )
    long_data = long_data.assign(
        level_0=pd.Categorical(long_data.level_0, ordered=True)
    )
    return long_data