Как найти индекс последнего действительного значения в списке или массиве - PullRequest
0 голосов
/ 16 мая 2019

Я хотел бы найти последнее действительное значение.Я нашел код для фрейма данных, но не могу найти код для списка или массива

List = [nan, 1, 4, 6, 8, 122, 12, 34, 54, nan, nan, nan,nan, nan]

Результат должен выглядеть следующим образом:

print(some_function_for_last_valid_index(List))
output : 8

(вывод - индекс)

Ответы [ 3 ]

4 голосов
/ 16 мая 2019

Это один подход

Ex:

import numpy as np
lst = [np.nan, 1, 4, 6, 8, 122, 12, 34, 54, np.nan, np.nan, np.nan,np.nan, np.nan]
lst = [i for i in lst if not np.isnan(i)]
#or lst = filter(lambda x: np.isfinite(x), lst)
print(len(lst)) #8
2 голосов
/ 16 мая 2019
nan = 'nan'
List = [nan, 1, 4, 6, 8, 122, 12, 34, 54, nan, nan, nan,nan, nan]

for i in range(len(List)-1,0,-1):
    if List[i] != nan:
        print(i)
        break

outpout:

8

другое решение:

while List and List[-1] is nan: List.pop()
print(len(List)-1)

outpout:

8
2 голосов
/ 16 мая 2019

Вы можете отфильтровать все значения nan и затем вернуть последний элемент. Для этого вы можете использовать встроенную функцию filter

new_list = list(fileter(lambda x: x != 'nan', old_list))
print(new_list[-1])

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

...