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"