2016-04-12 4 views
2

対応する列にNoneがある値の列を選択しようとしています。データフレームからNone-sを選択

tdf = pandas.DataFrame([ 
    {'a':'val', 'b':'abc'}, 
    {'a':None, 'b':'def'}]) 

値に対して次の作品以来:次のように

私のデータフレームが見えます

In [112]: tdf[tdf['a']=='val'] 
Out[112]: 
    a b 
0 val abc 
私は Noneのために働くために同じことを期待していた

が、それはしていません:

In [111]: tdf[tdf['a']==None] 
Out[111]: 
Empty DataFrame 
Columns: [a, b] 
Index: [] 

最後に、tdf[tdf['a']==None]['b']のようなものを使用したいと思いますが、どうすれば処理できますかそれらのNoneの値は適切ですか?

答えて

4

使用isnullNaNをテストするには:それはとしても利用可能である

In [72]: 
np.NaN == np.NaN 

Out[72]: 
False 

In [73]: 
np.NaN != np.NaN 

Out[73]: 
True 

In [71]: 
tdf[tdf.isnull()] 

Out[71]: 
     a b 
0 NaN NaN 
1 None NaN 

NaNは、それはあなたのために失敗した理由である、それは自分自身に等しくない性質を持っています方法について:series

In [74]: 
tdf[tdf['a'].isnull()] 

Out[74]: 
     a b 
1 None def 

具体的には、ブーリアンマスクをisnullからlocに渡し、列 'b'を選択することができます。

In [75]: 
tdf.loc[tdf['a'].isnull(), 'b'] 

Out[75]: 
1 def 
Name: b, dtype: object 
関連する問題