def _select_df_in_between(df, start_date, end_date, shop_ids):
    """Get subset of DF that is between given dates

    Arguments:
         df: pandas DataFrame.
         start_date (datetime.datetime): The start date to select
         end_date (datetime.datetime): The end date to select. Start_date <= end_date
         shop_ids (int): The shop_id to select
    Returns:
        selected_df: pandas DataFrame. Subset of the DF with the given condition
    """

    selected_df = df[(df["date"].between(start_date, end_date))
                     & (df["shopID"].isin(shop_ids))]
    # selected_df["profit"] = selected_df["itemPrice"] * selected_df["transactionAmount"]
    selected_df.loc[:, "profit"] = selected_df.loc[:, "itemPrice"].multiply(selected_df.loc[:, "transactionAmount"],
                                                                            axis="index")
    return selected_df