我想找到最后一个有效值。 我找到了一些数据框代码,但找不到列表或数组的代码
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
(输出是一个索引)
答案 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