страна конвертируется в континент - PullRequest
0 голосов
/ 19 апреля 2020
def country_to_continent(country_name):
    country_alpha2 = pc.country_name_to_country_alpha2(country_name)
    country_continent_code = pc.country_alpha2_to_continent_code(country_alpha2)
    country_continent_name = pc.convert_continent_code_to_continent_name(country_continent_code)
    return country_continent_name
countries = list(df['country'])

[country_to_continent(country)for country in countries] 
def country_to_continent(country_name):
    country_alpha2 = pc.country_name_to_country_alpha2(country_name)
    country_continent_code = pc.country_alpha2_to_continent_code(country_alpha2)
    country_continent_name = pc.convert_continent_code_to_continent_name(country_continent_code)
    return country_continent_name

country_name = list(df['country'])
country_to_continent(country_name)

На самом деле я не могу понять, почему мой второй неправильный, а первый правильный. и получите неустранимую ошибку

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Во втором фрагменте вы передаете список функции countries функции country_to_continent, которая согласно первому примеру получает один country в качестве параметра.

Если вы хотите преобразовать весь столбец в вашем Dataframe, попробуйте вместо этого:

print(df["country"].apply(lambda x: country_to_continent(x)))
0 голосов
/ 19 апреля 2020

Вы получаете ошибку unhashable type во втором случае, поскольку ваша функция предполагает, что переданный ей параметр равен country_name, а не list из country_name.

Когда вы Сделайте это [country_to_continent(country)for country in countries], вы передаете каждый элемент countries один за другим в вашу функцию.

Однако, когда вы говорите

country_name = list(df['country'])
country_to_continent(country_name)

Вы передаете весь список в одном go к вашей функции, что приводит к этой ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...