如何找到熊猫系列中某个值的 last 出现索引?
例如,假设我有一个如下系列:
s = pd.Series([False, False, True, True, False, False])
我想找到一个True
值的最后一个索引(即索引3),您将如何处理?
答案 0 :(得分:4)
使用nonzero
s.nonzero()[0][-1]
Out[66]: 3
答案 1 :(得分:2)
如果要查找布尔数组,可以在反向系列上使用np.argmax
:
>>> len(s) - np.argmax(s[::-1].values) - 1
3
如果您要查找其他值,只需使用==
下面是寻找dog
的最后一次出现的示例:
>>> s = pd.Series(['dog', 'cat', 'fish', 'cat', 'dog', 'horse'])
>>> len(s) - np.argmax(s[::-1].values=='dog') - 1
4
但是,这将为您提供一个数字索引。如果您的系列有自定义索引,则不会返回该索引。
答案 2 :(得分:1)
您可以将生成器表达式与next
和enumerate
一起使用:
s = pd.Series([False, False, True, True, False, False])
res = len(s) - next(idx for idx, val in enumerate(s[::-1], 1) if val) # 3
这对于结尾处带有True
值的大型系列会更有效。