2017-07-11 31 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