从另一个列表中删除一个列表中与nan对应的项目

时间:2015-08-07 09:33:38

标签: python scikit-learn

对于sklearn中的回归,我有一个列表x和一个列表y。不幸的是,这些列表有空白/ NaN。 NaN会破坏任何分析,因此我需要删除其他列表中的每个NaN及其对应的数字(以保持x[0]y[0]之间的关系等。)

找到这个的优雅方法是什么?是否有替代循环?

1 个答案:

答案 0 :(得分:1)

使用Python内置函数zipfilter

尝试以下操作
def filter_nans(x, y):
    filtered = filter(lambda o: not math.isnan(o[0]) and not math.isnan(o[1]), zip(x, y))    
    return [el[0] for el in filtered], [el[1] for el in filtered]

例如:

x = [1, 2, 3, 4, 5, 6, None, 8]
y = [10, 'not a number', 30, 40, 50, 60, 70, 80]

x, y = filter_nans(x, y)

>>> x
[1, 3, 4, 5, 6, 8]
>>> y
[10, 30, 40, 50, 60, 80]