def clean_df(df):
    """
    Takes in a Pandas Dataframe from Dreamclinic
    and cleans it for aggregation.
    """
    # remove rows where HrsWorked = 0
    # because they are just used by the front desk staff somehow
    df = df[df['HrsWorked'] != 0]
    # fill NaN values in 'Service_Category with 'Massage'
    df['Service_Category'] = df['Service_Category'].fillna(value='Massage')
    # remove white space from Therapist names
    df['Therapist'] = df['Therapist'].str.strip()
    # make all therapist names lowercase to avoid typos in data entry
    df['Therapist'] = df['Therapist'].str.lower() 
    # find and replace nicknames with domain knowledge
    df = df.replace('abby thomson', 'abigail thomson')
    # Drop Address_City and Addres_State Columns from Dataframe
    df.drop(['Address_City', 'Address_State', 'Invoice_Category'],
                                               axis=1, 
                                               inplace=True)
    # Drop rows without a clientID
    df = df.dropna()
    return df