页码 版本“ 0.14.0”
我需要为数据框中的列做一个not in语句。
对于isin语句,我使用以下内容过滤所需的代码:
h1 = df1[df1['nat_actn_2_3'].isin(['100','101','102','103','104'])]
我想为另一列做一个不等于或不等于(不确定哪个用于python)的语句。
所以我尝试了以下方法:
h1 = df1[df1['csc_auth_12'].notin(['N6M','YEM','YEL','YEM'])]
h1 = df1[df1['csc_auth_12'] not in (['N6M','YEM','YEL','YEM'])]
和:
h1.query(['N6M','YEM','YEL','YEM'] not in ['csc_auth_12'])
我真的很想从数据集中过滤掉N6M,YEM,YEL和YEM。
我也对如何做一个之间的声明感兴趣。
因此,对于以下内容,我不得不手动键入所有500个代码。我想做类似的事情:
h1 = df1[df1['nat_actn_2_3'].isin['100','102'] and isbetween [500 & 599])]
但这就是我所拥有的:
h1 = df1[df1['nat_actn_2_3'].isin(['100','101','102','103','104','107','108','112','115','117','120','122','124','128',
'130','132','132','140','141','142','143','145','146','147','148','149','170','171',
'172','173','179','190','198','199','501','502','503','504','505','506','507','508',
'509','510','511','512','513','514','515','516','517','518','519','520','521','522',
'523','524','525','526','527','528','529','530','531','532','533','534','535','536',
'537','538','539','540','541','542','543','544','545','546','547','548','549','550',
'551','552','553','554','555','556','557','558','559','560','561','562','563','564',
'565','566','567','568','569','570','571','572','573','574','575','576','577','578',
'579','580','581','582','583','584','585','586','587','588','589','590','591','592',
'593','594','595','596','597','598','599','702','721','740','953','955'])]
有什么建议么?
谢谢。
取反布尔值条件~
以反转掩码:
h1 = df1[~df1['nat_actn_2_3'].isin(['100','101','102','103','104'])]
notin
和not in
,前者不存在,而后者可能会引发一个ValueError
或模棱两可的值错误,因为您正尝试in
与数组一起使用,而pandas不能那样工作。
对于第二个问题,您需要像这样复合布尔条件:
h1 = df1[(df1['nat_actn_2_3'].isin['100','102']) | ((df1['nat_acctn_2_3'] > 500) & (df1['nat_actn_2_3'] < 599))]
因此,我假设您要从文本中获取等于100/102或介于500和599之间的行(不清楚是否要包含这些值,但可以分别更改为>=
和<=
)。
在这里,您分别使用按位运算符&
和分别|
用于and
和和or
,()
由于运算符优先级,还需要包装每个条件
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句