вставить значение в список, игнорируя Nan - PullRequest
1 голос
/ 22 апреля 2020

Как вставить значение прямо перед nan в списке, в конце которого должен быть nan?

random = [9,1,5, ... 7,6,3,2,5, nan, nan, nan, ...]

random.append(8181) < somehow add function here

результаты должны быть такими, что значение вставляется перед первым nan

random = [9,1,5, ... 7,6,3,2,5,8181, nan, nan, nan, ...]

Ответы [ 3 ]

3 голосов
/ 22 апреля 2020

Перейдите список от конца, чтобы найти правильную позицию, затем используйте list.insert:

import math

i = 0
while math.isnan(random[i - 1]):
    i -= 1

random.insert(i, 8181)
1 голос
/ 22 апреля 2020

Если мы знаем, сколько NaN значений у нас есть, мы можем использовать insert с отрицательным счетом.

my_list.insert(-nan_count, 8181)

Если мы не знаем счет, то нам нужно выяснить, последняя позиция.

for i,v in enumerate(reversed(my_list)): # loop backwards
    if v==v:
        a.insert(len(a)-i, 8181) # found the first non NaN, insert just before this
        break # only do it for the first item
1 голос
/ 22 апреля 2020

Это может быть:

In [2067]: import numpy as np 
In [2057]: pos = random.index(np.nan)
In [2062]: b = random[:] 
In [2064]: b[pos:pos] = [8181]                                                                                                                                                                              

In [2065]: b                                                                                                                                                                                                
Out[2065]: [9, 1, 5, 7, 6, 3, 2, 5, 8181, nan, nan, nan]

ИЛИ

In [2070]: random = [9,1,5,7,6,3,2,5, nan, nan, nan]                                                                                                                                                        
In [2057]: pos = random.index(np.nan)
In [2071]: random.insert(pos, 8181)                                                                                                                                                                         

In [2072]: random                                                                                                                                                                                           
Out[2072]: [9, 1, 5, 7, 6, 3, 2, 5, 8181, nan, nan, nan]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...