繁体   English   中英

Panda 列值更改基于 lamda function 的另一列

[英]Panda column value change based on another column by lamda function

我有一只熊猫 dataframe:

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

我想给加拿大评级值 3。 这段代码有效。

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

但我想用 lambda function 来做:

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 function 的帮助

这确实是一个语法错误。 你应该做:

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

但是,您的原始解决方案要好得多

对于此类问题,我建议您避免apply (或map )。 np.where更快更容易实现


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM