En essayant de travailler sur un projet avec pandas j'ai rencontré un problème. J'avais une liste avec une valeur nan
et je n'ai pas pu la supprimer.
J'ai essayé:
incoms=data['int_income'].unique().tolist()
incoms.remove('nan')
Mais cela n'a pas fonctionné:
list.remove (x): x absent de la liste "
La liste incoms
est la suivante:
[75000.0, 50000.0, 0.0, 200000.0, 100000.0, 25000.0, nan, 10000.0, 175000.0, 150000.0, 125000.0]
Ce que vous pouvez faire est simplement d'obtenir une liste nettoyée où vous ne mettez pas les valeurs qui, une fois converties en chaînes, sont "nan".
Le code serait:
incoms = [incom for incom in incoms if str(incom) != 'nan']
Je pense que vous avez besoin de dropna
pour supprimer NaN
s:
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]
Et si toutes les valeurs sont uniquement des entiers:
incoms=data['int_income'].dropna().astype(int).unique().tolist()
print (incoms)
[75000, 50000, 0, 200000, 100000, 25000, 10000, 175000, 150000, 125000]
Ou supprimez NaN
s en sélectionnant toutes les valeurs non NaN par numpy.isnan
:
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]
Pure python solution - plus lent si gros 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]
Une possibilité dans ce cas particulier est de supprimer les nans plus tôt pour éviter de le faire dans la liste:
incoms=data['int_income'].dropna().unique().tolist()