def get_oneyear_hour_ave(emissions_data, season, column_name, year):
    """
    Select all days according to season (including all seasons)
    and return hourly average emissions rates.

    Called in alldays_oneyear_seasonal_ave()

    Args:
        emissions_data: dataframe with hourly emissions rates
        season: season (str) to calculate average over
        column_name: name (str) of emissions rates column in emissions_data
        year: year (int) to calculate average over
    Returns:
        hourly average emissions rates for the given season
    """
    df_cp = emissions_data

    # Month range for different seasons are defined as follows:
    if season == 'Winter':
        month = [1, 2, 3]
    elif season == 'Spring':
        month = [4, 5, 6]
    elif season == 'Summer':
        month = [7, 8, 9]
    elif season == 'Fall':
        month = [10, 11, 12]
    elif season == 'Annual':
        month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    else:
        raise ValueError('Time period unavailable!')

    if not year in df_cp['Report_Year'].tolist():
        raise ValueError('Year unavailable!')
    else:
        pass

    df_2 = df_cp[df_cp['Report_Month'].isin(month)]
    df_2 = df_2[df_2['Report_Year'] == year]

    return df_2.groupby(['Report_Hour'])[column_name].mean().reset_index()