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

私はこのコードを試しています。python pandasは、2つの列が(等しくない)行を選択します。

しかし、私は彼らが働いていないこれらの木

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

==との混乱する方法0

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 

しかし、列の値のいずれかが文字列だった!場合、期待どおりpd.Series

を比較

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

関連する問題