通过lamda函数基于另一列更改熊猫列值

时间:2020-04-21 13:52:40

标签: python pandas dataframe lambda

我有一个熊猫数据框:

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函数的帮助

2 个答案:

答案 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)