Как удалить нан из списка списков?

Я пытаюсь удалить всех нанов из списка списков, и мои данные выглядят следующим образом:

[[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)]

Но он удаляет весь список, а не только имя няни.

Проблема с этим ответом заключается в том, что он удаляет список, но не нанс в списке. На самом деле, это то же самое, что я делал раньше

Pratyusha Pasumarty 18.06.2019 22:28
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
1
3 566
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте перебрать список и создать новый список, используя метод иснан 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.

lseki 18.06.2019 22:30

Без 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]]

Другие вопросы по теме