如果条件失败,np.where()则不执行任何操作 [英] np.where() do nothing if condition fails

查看:167
本文介绍了如果条件失败,np.where()则不执行任何操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框示例:

       Created      Insert Time   MatchKey              In Previous    New Type
18593  2016-08-12   2018-02-19    LXGS090393APIN040640       No        New Existing
5517   2016-08-12   2018-02-19    LIN380076CI166203726       No        New Existing
2470   2018-02-12   2018-02-19    CI164414649APIN160672      No        New Existing
13667  2016-08-12   2018-02-19    LIN257400APIN015446       Yes        New Existing
10998  2016-08-12   2018-02-19    LXSV225786APIN158860      Yes        New Existing
20149  2016-08-12   2018-02-19    LIN350167APIN158284       Yes        New Existing
20143  2016-08-12   2018-02-19    LIN350167APIN161348       Yes        New Existing
30252  2016-08-12   2018-02-19    LXGS120737APIN153339      Yes        New Existing
12583  2016-08-09   2018-02-19    WIN556410APIN157186       Yes        New Existing
28591  2018-05-03   2018-02-19    CI195705185APIN009076      No        New Created

我想用以下方式替换 New Type 列中的值:如果条件失败,该函数将不执行任何操作:

I wanted to replace values in New Type column in a way that if the condition is failed the function does nothing:

current['New Type'] = np.where(current['In Previous']=='Yes','In Previous',pass)

但显然会导致语法错误,因为np.where()无法处理 pass :

but apparently it causes a syntax error as np.where() doesn't handle pass:

File "<ipython-input-9-7f68cda12cbe>", line 1
current['New Type'] = np.where(current['In Previous']=='Yes','In Previous',pass)

                                                                          ^
SyntaxError: invalid syntax

要实现相同目标,有什么替代方法?

What would be an alternative to achieve the same?

推荐答案

只返回该列而不是pass,这与在条件为False时不执行任何操作一样:

Just return the column instead of pass this is the same as doing nothing when the condition is False:

current['New Type'] = np.where(current['In Previous']=='Yes','In Previous',current['New Type'] )

或者您也可以屏蔽这些行:

Or you can just mask those rows:

current['New Type'] = current.loc[current['In Previous']=='Yes', 'In Previous']

这篇关于如果条件失败,np.where()则不执行任何操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆