def combine_ranked_stations(rankings):
    """ Combine :any:`pandas.DataFrame` s of candidate weather stations to form
    a hybrid ranking dataframe.

    Parameters
    ----------
    rankings : list of :any:`pandas.DataFrame`
        Dataframes of ranked weather station candidates and metadata.
        All ranking dataframes should have the same columns and must be
        sorted by rank.

    Returns
    -------
    ranked_filtered_candidates : :any:`pandas.DataFrame`
        Dataframe has a rank column and the same columns given in the source
        dataframes.
    """

    if len(rankings) == 0:
        raise ValueError("Requires at least one ranking.")

    combined_ranking = rankings[0]
    for ranking in rankings[1:]:
        filtered_ranking = ranking[~ranking.index.isin(combined_ranking.index)]
        combined_ranking = pd.concat([combined_ranking, filtered_ranking])

    combined_ranking["rank"] = range(1, 1 + len(combined_ranking))
    return combined_ranking