如何快速检查pandas序列中是否包含负值

9
什么是检查给定的pandas系列是否包含负值的最快方法。
例如,对于下面的系列s,答案为True
s = pd.Series([1,5,3,-1,7])

0    1
1    5
2    3
3   -1
4    7
dtype: int64

(s<0).sum()>0 - Vivek Kalyanarangan
1
更短的写法 - (s<0).any() - Vivek Kalyanarangan
1
甚至更短 - any(s<0) - Mohit Motwani
3个回答

19

使用any

>>> s = pd.Series([1,5,3,-1,7])
>>> any(s<0)
True

在所有的答案中,这是最快的。 - Mohit Motwani
@MohitMotwani 这取决于系列的大小和项目索引是否小于零。 - Van Peer
@VanPeer 在这种情况下,是否有一个通用的最快答案? - Mohit Motwani
此方法相对于其他提到的方法在哪些方面会更慢? - Mohit Motwani

5
您可以使用 Series.lt
s = pd.Series([1,5,3,-1,7])
s.lt(0).any()

输出:

True

"lt" 代表“小于”。 - codeananda

0

使用任何函数:

>>>s = pd.Series([1,5,3,-1,7])
>>>any(x < 0 for x in s)
True
>>>s = pd.Series([1,5,3,0,7])
>>>any(x < 0 for x in s)
False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接