2017-04-27 12 views
2

ここでいくつかの答えを検索して試しましたが、NaNを使用して行を戻すためのものです。私はNaN値を持つ列だけを返したいと思います。例えば以下のdf。列「A」と「LG」を選択するにはどうすればよいですか? indexPandasのNaN値を持つサブセット列

mask = df.isnull().any() 
print (mask) 
A  True 
H  False 
LG  True 
dtype: bool 

最終使用ブールインデックス:

df = pd.DataFrame(
     {'H': ['a','b', 'c'], 
     'A': [np.nan,'d', 'e'], 
     'LG':['AR1', 'RO1', np.nan], 
     }) 

が続いisnullanyでチェック:

df = pd.DataFrame(
     {'H': ['a','b', 'c'], 
     'A': [np.nan,'d', 'e'], 
     'LG':['AR1', 'RO1', np.nan], 
     }) 

print(df) 

    A H LG 
0 NaN a AR1 
1 d b RO1 
2 e c NaN 
+1

可能デュープ:[カラムはパンダのデータフレーム(パイソン)のいずれかのNaN値が含まれている検索方法](http://stackoverflow.com/questions/36226083/how-to-find-which-columns-contain -any-nan-value-in-pandas-dataframe-python) – MaxU

+0

私はそう信じています。私はサブセットを求めていますが、カラム名だけを返すのは – Zanshin

+0

です。ありがとう!私は[その投稿]を更新しました(http://stackoverflow.com/a/36226137/5741205) – MaxU

答えて

3

は、私はあなたがサンプルでnp.nanに文字列にNaNを置き換える最初の必要があると思う

print (mask.index[mask]) 
Index(['A', 'LG'], dtype='object') 

必要の列がlocを追加する場合:

print (df.loc[:, mask]) 
    A LG 
0 NaN AR1 
1 d RO1 
2 e NaN 
+0

素晴らしい、これは動作します。ありがとう – Zanshin

1

これはNaNを含むすべての列を返します。

df = pd.DataFrame(
     {'H': ['a','b', 'c'], 
     'A': [np.nan,'d', 'e'], 
     'LG':['AR1', 'RO1', np.nan], 
     }) 

x = pd.isnull(df).any() 

print(df[x.index[x]]) 

    A LG 
0 NaN AR1 
1 d RO1 
2 e Na 
関連する問題