#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
Я пытаюсь создать новый столбец с именем «Континент», сгруппировав значения в другом столбце под названием «Регионы». Единственные коды, которые мне удалось сделать, это:
my_data.loc[(my_data ["Region"] == ("Australia and New Zealand")), "Continent"] = "Australia"
Но у меня возникают проблемы, когда для континента существует более одного региона. Я сделал это:
my_data.loc[((my_data ["Region"] == ("Central and Eastern Europe")) amp; (my_data["Region"] == ("Western Europe"))), "Continent"] = "Europe"
my_data.loc[((my_data ["Region"] == ("Eastern Asia")) amp; (my_data["Region"] == ("Southeastern Asia"))), "Continent"] = "Asia" amp; (my_data["Region"] == ("Southern Asia "))), "Continent"] = "Asia"
похоже, что он не распознает код, потому что, когда я выполняю это, в столбце просто появляется «NaN» вместо названия континента.
Кто-нибудь знает, в чем проблема?
Ответ №1:
Вот логическая проблема, никогда не бывает одного условия AND
другим, потому что тестируйте один столбец.
Поэтому необходимо |
побитовое OR
:
my_data.loc[((my_data ["Region"] == ("Central and Eastern Europe")) | (my_data["Region"] == ("Western Europe"))), "Continent"] = "Europe"
Что работает так же, как тест с помощью Series.isin
:
my_data.loc[my_data ["Region"].isin(["Central and Eastern Europe", "Western Europe"]), "Continent"] = "Europe"