如何在Pandas系列中找到某个值的上一次出现索引?
例如,假设我有一个系列,如下所示:
s = pd.Series([False, False, True, True, False, False])我想找到True值的最后一个索引(即索引3),你会怎么做呢?
发布于 2018-09-12 21:37:45
s = pd.Series([False, False, True, True, False, False])
s.where(s).last_valid_index()输出:
3使用@ Using 3483203示例
s = pd.Series(['dog', 'cat', 'fish', 'cat', 'dog', 'horse'], index=[*'abcdef'])
s.where(s=='cat').last_valid_index()输出
'd'发布于 2018-09-12 21:40:43
使用nonzero
s.nonzero()[0][-1]
Out[66]: 3发布于 2018-09-12 21:31:02
如果您正在查找布尔数组,则可以在反向序列中使用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但是,这将为您提供一个数字索引。如果您的系列具有自定义索引,则不会返回该索引。
https://stackoverflow.com/questions/52303696
复制相似问题