在列表中删除“ NaN”和单引号项目

时间:2019-12-28 17:55:28

标签: python numpy

目标是在列表中删除“ NaN”和单引号项目。我正在使用numpy,但无法正常工作。

输入:

abc=[['mai', 'dubai', '200ml', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN'],
     ['nestle', '', 'nido', 'milk', 'powder', '', '2.5kg', '(n1)', 'NaN'],
     ['al', 'alali', 'mushroom', 'pieces', '&', 'stems', '400gm', 'NaN', 'NaN'],
     ['mai', 'dubai', 'cup', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN']]


x = abc[~np.isnan(abc)]


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''

预期输出:

abc=[['mai', 'dubai', '200ml'],
     ['nestle', 'nido', 'milk', 'powder', '2.5kg', '(n1)'],
     ['al', 'alali', 'mushroom', 'pieces', 'stems', '400gm'],
     ['mai', 'dubai', 'cup']]

谢谢

2 个答案:

答案 0 :(得分:3)

不使用numpy,您可以使用列表推导和filter

exclude = ('', 'NaN')
[list(filter(lambda x: x not in exclude, l)) for l in abc]

答案 1 :(得分:2)

我认为您可以进行简单的列表理解。

result = [[i for i in x if i != 'NaN' and i != ''] for x in abc]

[['mai', 'dubai', '200ml'],
 ['nestle', 'nido', 'milk', 'powder', '2.5kg', '(n1)'],
 ['mai', 'dubai', 'cup']]