我正在使用pandas 0.13.0
我有一个包含250万条记录的数据框(a)
我想排除几百条同时应用两个条件的记录:只记录同时满足两个条件的记录。
我想知道在应用这两个条件时我将排除多少条记录:
len(a)
2523250
b=a[(a.cond1=='120.A') & (a.cond2==2012)]
len(b)
6010
但是当我应用条件来获取最终的数据帧时:
c=a[(a.cond1!='120.A') & (a.cond2!=2012)]
len(c)
2214968
在第二种情况下'&'工作就像和' OR' 我做错了什么?
答案 0 :(得分:3)
回顾De Morgan's laws。 &
的逻辑否定不仅仅是将==
与!=
切换,您还必须将&
与|
交换,因为您希望行{ {1}} 或 cond1 != '120.A'
,即如果其中一个cond2 != 2012
条件为真,则要排除一行,因为这会产生原始!=
语句{ {1}}。
@ EdChum上面的评论相当于
&