2017-06-13 14 views
1

は、私がどのように見えるデータフレーム(eval_datan)があります。複数の列のPandas isinが一致していないようですか?

ccs1 ccs2 ccs3 ccs4 ccs5 ccsp1 ccsp2 ccsp3 ccsp4 ccsp5 
0 101  164  53  98  200  102  100  256  259  133 
1 204  120  147  258  151  47  256  259  48 
49 
2 197  2  39  253  259  259  49  98  256  257 
3 198  258  126  127  128  133  128  256  134  92 
4 204  211  232  244  95  259  256  257  98 
254 

を私は決定しようとしているccs5がccsp1-ccsp5のいずれかである場合

私のコードは次のとおりです。

eval_datan['correct']=(eval_datan['ccs5'].isin (eval_datan[['ccsp1','ccsp2','ccsp3','ccsp4','ccsp5']])) 

私はすべて間違っています2行目はccs5 = 259として真実と言うべきです。最初はccsp1と同じですが、数字の種類が違うと思っていましたが、元々numpyが生成していたようにint64からuint16としてccsp列を再作成しました。 ccs5列はuint16です。

答えて

3
eval_datan['correct'] = eval_datan[['ccsp1','ccsp2','ccsp3','ccsp4','ccsp5']].isin(eval_datan['ccs5']).any(axis=1) 

出力:

ccs1 ccs2 ccs3 ccs4 ccs5 ccsp1 ccsp2 ccsp3 ccsp4 ccsp5 correct 
0 101 164 53 98 200 102 100 256 259 133 False 
1 204 120 147 258 151  47 256 259  48  49 False 
2 197  2 39 253 259 259  49  98 256 257  True 
3 198 258 126 127 128 133 128 256 134  92  True 
4 204 211 232 244 95 259 256 257  98 254 False 
関連する問題