我有一个带有布尔项的熊猫系列。我想获取其中值为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…