2017-06-27 17 views
0

ファンダのデータフレームに2つのブール型の列AとBがあり、それぞれにデータが欠落しています(NaNで表されます)。私が欲しいのは2列とのAND演算を行うことですが、私は、元の列のどちらかがNaNであれば結果のブーリアン列がNaNになりたいです。pandasのNaN値を維持するブール比較

0 True 
1 False 
2 False 
3 NaN 
4 NaN 
5 False 
dtype: bool 

ではなく、私が手::私はdf.A & df.Bを行う際

A  B 
0 True True  
1 True False 
2 False True 
3 True NaN  
4 NaN NaN 
5 NaN False 

は今、私がしたい:私は、次の表を持って

0 True 
1 False 
2 False 
3 True 
4 True 
5 False 
dtype: bool 

この動作はnp.bool(np.nan) & np.bool(False)とその順列と一致しています、しかし、私が本当に欲しいのは、各行が両方ともTrueであるかどうか、あるいは確かに両方ともTrueではないことがわかっている列です。両方がTrueであることがわかっている場合、少なくとも1つはFalseであることがわかっていれば結果はTrueになります。そうでなければNaNが必要です。

これを達成する方法はありますか?

+1

最終値所望の出力では 'NaN'ではないでしょうか? – jezrael

+0

は 'numpy.logical_and'を使用してください。 – Goyo

+0

いいえ、エントリの少なくとも1つがFalseであることがわかっている限り、それらは両方とも真ではないことがわかります。 –

答えて

3

のはnp.logical_andを使用してみましょう:

import numpy as np 
import pandas as pd 
df = pd.DataFrame({'A':[True, True, False, True, np.nan, np.nan], 
        'B':[True, False, True, np.nan, np.nan, False]}) 

s = np.logical_and(df['A'],df['B']) 
print(s) 

出力:

0  True 
1 False 
2 False 
3  NaN 
4  NaN 
5 False 
Name: A, dtype: object 
関連する問題