2016-11-16 4 views
2

データが欠落している行や列を選択する方法を学習しようとしています。 value_countsを使用すると、条件を満たす列を見つけることができますが、データフレームから対応する列にアクセスして削除できるように、インデックスをint形式で取得する方法を見つけることができません。Pandasに欠落しているデータがいくつもある行/列を選択するにはどうすればよいですか?

intでインデックスを変換/取得するにはどうすればよいですか?そして、これを行うためのより簡単な方法がありますか?

df3 = pandas.DataFrame([[1,6.5,3],[1,'NA','NA'],[3,'NA','NA'],['NA',6.5,'NA']]) 
    df3_value_counts = df3.apply(pandas.value_counts).fillna(0).ix['NA'] 
    df3_missing_data_index = df3_value_counts[df3_value_counts > 2].index 

答えて

5

最初のオフは、あなたがやりたいそして、あなたが方法で構築使用することができますNaN

df3 = df3.replace('NA', np.nan).astype(float) 

を表すものを使用してオフにはるかに優れている

df3.dropna(axis=1, thresh=2) 

enter image description here

0

ここに1つのアプローチがあります。

df3.columns[(df3.values == 'NA').sum(0) > 2] 

代わりに、おそらく少し遅くなりますが、コンパクトな1 -

df3.columns[(df3 == 'NA').sum(0) > 2] 

サンプル実行 -

In [292]: df3 
Out[292]: 
    0 1 2 
0 1 6.5 3 
1 1 NA NA 
2 3 NA NA 
3 NA 6.5 NA 

In [293]: df3.columns[(df3.values == 'NA').sum(0) > 2] 
Out[293]: Int64Index([2], dtype='int64') 
関連する問題