如何在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
相关产品推荐
相关产品推荐

