You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas/NumPy中提取布尔Series值为True的索引(无需普通Python)

提取Pandas Series中值为True的索引的简洁方法

当然有更优雅的解决方案!完全不用手动转字典、写循环,直接用Pandas或NumPy的内置功能就能轻松搞定,而且效率更高~

先回顾你的原始Series

import pandas as pd
s = pd.Series({'a': False, 'b': True, 'c': False, 'd': True, 'e': False})

方法1:Pandas布尔索引(最常用)

直接利用布尔索引筛选出值为True的元素,再取其索引即可:

# 获取值为True的索引(返回Index对象)
true_indices = s[s].index

# 转成列表查看
print(list(true_indices))  # 输出: ['b', 'd']

# 或者直接输出空格分隔的结果,和你的需求完全匹配
print(' '.join(true_indices))  # 输出: b d

方法2:用loc索引器

写法更清晰,效果和上面完全一致:

true_indices = s.loc[s].index
print(' '.join(true_indices))

方法3:NumPy的where函数

如果想用NumPy的方式实现,可以结合np.where定位True值的位置,再提取对应索引:

import numpy as np
true_indices = s.index[np.where(s.values)]
print(' '.join(true_indices))

这些方法都是矢量化操作,比你原来的Python循环效率高很多,尤其是当Series数据量很大的时候,性能差距会非常明显~

内容的提问来源于stack exchange,提问作者cardamom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:02:25