2017-07-11 30 views
0
hsp.loc[hsp['Len_old'] == hsp['Len_new']] 

我試試這個代碼,它的工作。python pandas選擇兩列(不相等)的行。

但我嘗試了這些樹

hsp.loc[hsp['Type_old'] == hsp['Type_new']] 
hsp.loc[hsp['Type_old'] != hsp['Type_new']] 
hsp.loc[hsp['Len_old'] != hsp['Len_new']] 

他們沒有工作。

我的數據表HSP就像

id Type_old Type_new Len_old Len_new 
1 Num  Num  15  15 
2 Num  Char  12  12 
3 Char  Num  10  8 
4 Num  Num  4  5 
5 Char  Char  9  10 

是否有更好的方法來選擇其中兩列都沒有queal行。

+1

你是什麼意思的「不工作」?預期產出是多少?實際輸出是多少? 我跑你提到的命令,他們正在工作,我期望他們。 – Bonifacio2

+0

它在我身邊工作 – Wen

+0

如果您覺得它有用,請隨時投票給我的答案。 – piRSquared

回答

1

如何被==與混淆比較pd.Series

當如預期

df[['Len_old', 'Len_new']].assign(NE=df.Len_old != df.Len_new) 

    Len_old Len_new  NE 
0  15  15 False 
1  12  12 False 
2  10  8 True 
3  4  5 True 
4  9  10 True 

0但是,如果列的值是一個字符串!

df[['Len_old', 'Len_new']].assign(NE=df.Len_old.astype(str) != df.Len_new) 

    Len_old Len_new NE 
0  15  15 True 
1  12  12 True 
2  10  8 True 
3  4  5 True 
4  9  10 True 

確保兩者是相同的類型。

2

使用補operator~

hsp.loc[~(hsp['Type_old'] == hsp['Type_new'])] 

這給:

id Type_old Type_new Len_old Len_new 
1 2  Num  Char  12  12 
2 3  Char  Num  10  8 

當布爾運算處理,補操作是反轉True了一個方便的方式False

+0

'!='不適合你嗎? – Wen