2017-01-11 2 views
1
a = [ [1,2,3,4,5], [6,np.nan,8,np.nan,10]] 
df = pd.DataFrame(a, columns=['a', 'b', 'c', 'd', 'e'], index=['foo', 'bar']) 

In [5]: df 
Out[5]: 
    a b c d e 
foo 1 2.0 3 4.0 5 
bar 6 NaN 8 NaN 10 

私はc > 3を持っている行を選択したい場合は、たとえば、私はdf[df.c > 3]を書くだろうか、通常のブールインデックス作品、理解しています。しかし、もし私が行軸に沿ってそれをしたいのであれば。 'bar' == np.nanの列だけを必要としているとします。ブールインデックス

私は以下のが原因同様df['a']df.loc['bar']のにそれを行う必要があることを想定しているだろう:

df.loc[df.loc['bar'].isnull()] 

しかし、それはない、と明らかにどちらresults[results.loc['hl'].isnull()]は同じエラーに*** pandas.core.indexing.IndexingError: Unalignable boolean Series key provided

を与えていないんありませんそれで私はどうしたらいいの?

答えて

1

あなたが列をマスクするために、ブールマスクを使用したいIIUC:

In [135]: 
df[df.columns[df.loc['bar'].isnull()]] 

Out[135]: 
     b d 
foo 2.0 4.0 
bar NaN NaN 

それともixを使用して、NPアレイにシリーズを減衰することができた:

In [138]: 
df.ix[:,df.loc['bar'].isnull().values] 

Out[138]: 
     b d 
foo 2.0 4.0 
bar NaN NaN 

ここでの問題は、ということです返されるブール値系列は列のマスクです:

インデックスにはnが含まれていますこれらの列の値の1つはラベルなのでエラーが発生するので、列に対してマスクを使用する必要があります。または、np配列を渡して列をマスクすることができますix

関連する問題