Изменение значения столбца Panda на основе другого столбца с помощью функции lamda - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть датафрейм панды:

star = pd.DataFrame({'Country':['Canada','USA', 'Mexico'],'Rating':[1,2,3], 'Score':[70,80,90]})

Я хочу присвоить Канаде значение рейтинга 3. И этот код работает.

star.loc[star['Country'] == 'Canada', 'Rating'] = 3

Но я хочу сделать это с помощью лямбда-функции:

star.Rating.map(lambda x: 3 if star.Country == 'Canada')

Дает синтаксическую ошибку

File "<ipython-input-41-544a311d7f86>", line 1
    star.Rating.map(lambda x: 3 if star.Country == 'Canada')
                                                           ^
SyntaxError: invalid syntax

Мне нужна помощь в лямбда-функция

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Это действительно синтаксическая ошибка. Вы должны сделать:

star.apply(lambda x: 3 if x.Country == 'Canada' else x.Rating, axis=1)

Однако ваше оригинальное решение намного лучше .

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

Я предлагаю вам избегать apply (или map) для такого рода проблем. np.where быстрее и проще в реализации


star["Rating"] = np.where(star.Country=="Canada", 3, star.Rating)

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