首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在潘达斯系列中找到与某一值相匹配的最后出现指数?

如何在潘达斯系列中找到与某一值相匹配的最后出现指数?
EN

Stack Overflow用户
提问于 2018-09-12 21:26:00
回答 4查看 11.3K关注 0票数 11

如何在Pandas系列中找到某个值的上一次出现索引?

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

代码语言:javascript
运行
复制
s = pd.Series([False, False, True, True, False, False])

我想找到True值的最后一个索引(即索引3),你会怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-12 21:37:45

使用last_valid_index

代码语言:javascript
运行
复制
s = pd.Series([False, False, True, True, False, False])
s.where(s).last_valid_index()

输出:

代码语言:javascript
运行
复制
3

使用@ Using 3483203示例

代码语言:javascript
运行
复制
s = pd.Series(['dog', 'cat', 'fish', 'cat', 'dog', 'horse'], index=[*'abcdef'])
s.where(s=='cat').last_valid_index()

输出

代码语言:javascript
运行
复制
'd'
票数 12
EN

Stack Overflow用户

发布于 2018-09-12 21:40:43

使用nonzero

代码语言:javascript
运行
复制
s.nonzero()[0][-1]
Out[66]: 3
票数 6
EN

Stack Overflow用户

发布于 2018-09-12 21:31:02

如果您正在查找布尔数组,则可以在反向序列中使用np.argmax

代码语言:javascript
运行
复制
>>> len(s) - np.argmax(s[::-1].values) - 1
3

如果您正在寻找另一个值,只需使用==将其转换为布尔数组即可。

下面是一个寻找最后一次出现dog的例子

代码语言:javascript
运行
复制
>>> s = pd.Series(['dog', 'cat', 'fish', 'cat', 'dog', 'horse'])
>>> len(s) - np.argmax(s[::-1].values=='dog') - 1
4

但是,这将为您提供一个数字索引。如果您的系列具有自定义索引,则不会返回该索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52303696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档