2017-08-15 13 views
0

パンダでプロジェクトを進めようとしているうちに、私は問題に遭遇しました。私はnanという値のリストを持っていて、それを削除できませんでした。リストからナノを削除する

私が試してみました:

incoms=data['int_income'].unique().tolist() 
incoms.remove('nan') 

しかし、それは動作しませんでした:

list.remove(X):

リスト「リストにないxはincomsです次のようになります。

[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, nan, 10000.0, 175000.0, 150000.0, 125000.0] 
+0

私はあなたが必要だと思う[ '.dropna'](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna。 html) –

+0

'pd.dropna()'を試してください – gobrewers14

+0

私の(または別の)回答が参考になった場合、[承諾](http://meta.stackexchange.com/a/5235/295067)それを忘れないでください答えの横にチェックマーク( '✓')を入れて、グレーアウトしてから塗りつぶしにします。ありがとう。 – jezrael

答えて

1

何ができるかは、単にあなたが一度文字列に変換、値を入れていないクリーンリストを取得しています、 'nan'です。

コードは次のようになります。

incoms = [incom for incom in incoms if str(incom) != 'nan'] 
4

私はあなたがdropnaが必要だと思うためNaNの削除:

incoms=data['int_income'].dropna().unique().tolist() 
print (incoms) 
[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, 10000.0, 175000.0, 150000.0, 125000.0] 

を、すべての値が唯一の整数である場合:

incoms=data['int_income'].dropna().astype(int).unique().tolist() 
print (incoms) 
[75000, 50000, 0, 200000, 100000, 25000, 10000, 175000, 150000, 125000] 

それともnumpy.isnanにより、すべての非NaN値を選択することでNaN秒を削除します。

a = data['int_income'].unique() 
incoms= a[~np.isnan(a)].tolist() 
print (incoms) 
[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, 10000.0, 175000.0, 150000.0, 125000.0] 

a = data['int_income'].unique() 
incoms= a[~np.isnan(a)].astype(int).tolist() 
print (incoms) 
[75000, 50000, 0, 200000, 100000, 25000, 10000, 175000, 150000, 125000] 

ピュアPythonのソリューション - slowier大きなDataFrame場合:

incoms=[x for x in list(set(data['int_income'])) if pd.notnull(x)] 
print (incoms) 
[0.0, 100000.0, 200000.0, 25000.0, 125000.0, 50000.0, 10000.0, 150000.0, 175000.0, 75000.0] 

incoms=[int(x) for x in list(set(data['int_income'])) if pd.notnull(x)] 
print (incoms) 
[0, 100000, 200000, 25000, 125000, 50000, 10000, 150000, 175000, 75000] 
関連する問題