如何找到与熊猫系列中的某个值匹配的最后出现索引?

时间:2018-09-12 21:26:00

标签: python pandas

如何找到熊猫系列中某个值的 last 出现索引?

例如,假设我有一个如下系列:

s = pd.Series([False, False, True, True, False, False])

我想找到一个True值的最后一个索引(即索引3),您将如何处理?

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)

您可以将生成器表达式与nextenumerate一起使用:

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值的大型系列会更有效。