2014-04-14 150 views
-1

我與熊貓合作0.13.0過濾數據

我有250萬條記錄

我要排除一些數以百計的應用兩個條件simoultaneusly記錄的數據幀(一):只有記錄同時滿足2個條件。

我想看看我有多少記錄應用兩個條件時,排除:

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

如果你這樣做是否匹配LEN第二個條件:一'[〜((a.cond1 == '120.A')(一。 COND2 == 2012))]'? – EdChum

+0

是的,它可以工作,但爲什麼我原來的方法不起作用? – user2082695

回答

3

評論De Morgan's laws。的&邏輯否定不是簡單地切換==!=,你也必須交換&|,因爲你想去的地方或者cond1 != '120.A'cond2 != 2012,即要排除的行如果在!=條件之一是行因爲這使得原始&聲明False

@以上EdChum的評論相當於

c=a[(a.cond1!='120.A') | (a.cond2!=2012)]