Я пытаюсь удалить всех нанов из списка списков, и мои данные выглядят следующим образом:
[[1,2,3,nan,nan,nan],[4,5,nan],[9,8,7,6,5,4,3,nan,nan,nan,nan,nan]]
Я пытался сделать это из этого ответа здесь (Как удалить [NaN] из списка списков?):
import math
l = [[1,2,3,np.nan,np.nan,np.nan],[4,5,np.nan],[9,8,7,6,5,4,3,np.nan,np.nan,np.nan,np.nan,np.nan]]
[xs for xs in l if not any(math.isnan(x) for x in xs)]
Но он удаляет весь список, а не только имя няни.






Попробуйте перебрать список и создать новый список, используя метод иснан numpy.
import numpy as np
nan = np.nan
l = [[1,2,3,nan,nan,nan],[4,5,nan],[9,8,7,6,5,4,3, nan, nan, nan, nan, nan]]
[[x for x in y if not np.isnan(x)] for y in l]
Вместо этого вы также можете использовать math.isnan, если в вашем env не установлен numpy.
Без numpy, с использованием модуля math:
import math
nan = float('nan')
l = [[1,2,3,nan,nan,nan],[4,5,nan],[9,8,7,6,5,4,3,nan,nan,nan,nan,nan]]
l = [[j for j in i if not math.isnan(j)] for i in l]
print(l)
Отпечатки:
[[1, 2, 3], [4, 5], [9, 8, 7, 6, 5, 4, 3]]
Проблема с этим ответом заключается в том, что он удаляет список, но не нанс в списке. На самом деле, это то же самое, что я делал раньше