How can I remove Nan from list Python/NumPy

numpy, python

Solution

The question has changed, so too has the answer:

Strings can't be tested using `math.isnan` as this expects a float argument. In your `countries` list, you have floats and strings.

In your case the following should suffice:

cleanedList = [x for x in countries if str(x) != 'nan']

Old answer

In your `countries` list, the literal `'nan'` is a string not the Python float `nan` which is equivalent to:

float('NaN')

In your case the following should suffice:

cleanedList = [x for x in countries if x != 'nan']

Problem

I have a list that countain values, one of the values I got is 'nan' ``` countries= [nan, 'USA', 'UK', 'France'] ``` I tried to remove it, but I everytime get an error ``` cleanedList = [x for x in countries if (math.isnan(x) == True)] TypeError: a float is required ``` When I tried this one : ``` cleanedList = cities[np.logical_not(np.isnan(countries))] cleanedList = cities[~np.isnan(countries)] TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' ```

Original source