def get_city(df, city_name=None, city_index=None):
    """
    returns an info dict for a city specified by `city name` containing

        {city_name: "São Paulo", city_ascii: "Sao Paulo",
         lat: -23.5504, lng: -46.6339, country: "Brazil", iso2: "BR", iso3: "BRA",
         admin_name: "São Paulo", capital: "admin", population: 22046000.0, id: 1076532519}

    :param df: pandas df containing cities data from simplemaps.com
    :return:
    """
    assert any([city_name is not None, city_index is not None])
    if city_name is not None:
        return df.loc[df['city_ascii'].str.lower() == city_name.lower()].to_dict('records')[0]
    if city_index is not None:
        return df.iloc[[city_index]].to_dict('records')[0]