如何在列表或数组中找到最后一个有效值的索引

时间:2019-05-16 13:25:54

标签: python list nan

我想找到最后一个有效值。 我找到了一些数据框代码,但找不到列表或数组的代码

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 个答案:

答案 0 :(得分:4)

这是一种方法

例如:

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

答案 1 :(得分:2)

您可以过滤出所有nan值,然后返回最后一项。为此,您可以使用内置函数filter

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

但是我不知道为什么在您的示例中您期望输出为7

答案 2 :(得分:2)

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

输出:

8

另一种解决方案:

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

输出:

8