Skip to content Skip to sidebar Skip to footer

Remove A Tuple Containing Nan In List Of Tuples -- Python

I have a long list of tuples and want to remove any tuple that has a nan in it using Python. What I currently have: x = [('Recording start', 0), (nan, 4), (nan, 7), ..., ('Eve

Solution 1:

You could use list comprehension which checks if any of the items in a tuple is NaN. Check is done by first checking the type and then with math.isnan since it doesn't work for other types:

import math

x = [('Recording start', 0), (float('nan'), 4), (float('nan'), 7), ('Event marker 1', 150)]
res = [t for t in x ifnotany(isinstance(n, float) and math.isnan(n) for n in t)]
print(res)

Output:

[('Recording start', 0), ('Event marker 1', 150)]

Solution 2:

Using list comprehension:

x = [('Recording start', 0), (nan, 4), (nan, 7), ('Event marker 1', 150)]

new = [i for i in x if nan not in i]

Solution 3:

res = [n for n in x if not nan in n]

Return all objects in x that do not have an objects nan in them.

Solution 4:

At least at my python usage of nan retured the 'not defined error', this is why I defined it by my self. I think you can use a Python filter function for yor needs. See the example:

nan = float('nan')
lst = [('Recording start', 0), (nan, 4), (nan, 7), ('Event marker 1', 150)]
y = filter( lambda x: nan notin x, lst)
print y

[('Recording start', 0), ('Event marker 1', 150)]

Post a Comment for "Remove A Tuple Containing Nan In List Of Tuples -- Python"