获取pandas布尔系列为True的索引列表 - python

我有一个带有布尔项的熊猫系列。我想获取其中值为True的索引列表。

例如输入pd.Series([True, False, True, True, False, False, False, True])
应该产生输出[0,2,3,7]

我可以通过列表理解来做到这一点,但是有没有更清洁或更快速的方法?

参考方案

使用 Boolean Indexing

>>> s = pd.Series([True, False, True, True, False, False, False, True])
>>> s[s].index
Int64Index([0, 2, 3, 7], dtype='int64')

如果需要np.array对象,请获取.values

>>> s[s].index.values
array([0, 2, 3, 7])

使用 np.nonzero

>>> np.nonzero(s)
(array([0, 2, 3, 7]),)

使用 np.flatnonzero

>>> np.flatnonzero(s)
array([0, 2, 3, 7])

使用 np.where

>>> np.where(s)[0]
array([0, 2, 3, 7])

使用 np.argwhere

>>> np.argwhere(s).ravel()
array([0, 2, 3, 7])

使用 pd.Series.index

>>> s.index[s]
array([0, 2, 3, 7])

使用python内置的 filter

>>> [*filter(s.get, s.index)]
[0, 2, 3, 7]

使用list comprehension

>>> [i for i in s.index if s[i]]
[0, 2, 3, 7]

Python Pandas:在多列上建立布尔索引 - python

尽管至少有关于如何在Python的pandas库中为DataFrame编制索引的two good教程,但我仍然无法在一个以上的列上找到一种优雅的SELECT编码方式。>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]}) >…

Python:对于长时间运行的进程,通过还是休眠? - python

我正在编写一个队列处理应用程序,该应用程序使用线程等待和响应要发送到该应用程序的队列消息。对于应用程序的主要部分,只需要保持活动状态即可。对于像这样的代码示例:而True: 通过要么而True: time.sleep(1)哪一个对系统的影响最小?除了保持python应用运行外,什么都不做的首选方式是什么? 参考方案 我可以想象time.sleep()会减少系…

Python:无符号32位按位算术 - python

试图回答另一篇有关其解决方案涉及IP地址和网络掩码的文章时,我陷入了普通的按位算法。在Python中,是否存在一种标准的方式来进行按位AND,OR,XOR,NOT运算,假设输入是“32位”(可能是负数)整数或long,并且结果必须是[[ 0,2 ** 32]?换句话说,我需要一个与无符号长整数之间的C按位运算有效的Python对应物。编辑:具体问题是这样的:…

Python:如何从字节中提取特定位? - python

我有一条消息,显示为14 09 00 79 3d 00 23 27。我可以通过调用message[4]从此消息中提取每个字节,例如,这将给我3d。如何从该字节中提取单个8位?例如,如何将24-27位作为单个消息?只需28位? 参考方案 要回答问题的第二部分,您可以使用按位运算来获取特定的位值# getting your message as int i = …

Python:检查是否存在维基百科文章 - python

我试图弄清楚如何检查Wikipedia文章是否存在。例如,https://en.wikipedia.org/wiki/Food 存在,但是https://en.wikipedia.org/wiki/Fod 不会,页面只是说:“维基百科没有此名称的文章。”谢谢! 参考方案 >>> import urllib >>> prin…