我有一个熊猫数据框:
star = pd.DataFrame({'Country':['Canada','USA', 'Mexico'],'Rating':[1,2,3], 'Score':[70,80,90]})
我想给加拿大评分等级3。这段代码有效。
star.loc[star['Country'] == 'Canada', 'Rating'] = 3
但是我想用lambda函数来做到这一点:
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
我需要有关lambda函数的帮助
答案 0 :(得分:2)
这确实是语法错误。您应该这样做:
star.apply(lambda x: 3 if x.Country == 'Canada' else x.Rating, axis=1)
但是,您原来的解决方案好得多。
答案 1 :(得分:1)
我建议您避免使用apply
(或map
)解决此类问题。 np.where
更快,更容易实现
star["Rating"] = np.where(star.Country=="Canada", 3, star.Rating)