2017-06-13 66 views
1

我有一個數據幀(eval_datan)看起來像:熊貓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在第1我認爲它可能是不同的數字類型,但我重新將ccsp列從int64 uint16作爲numpy最初生成的沒有幫助。 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