【问题标题】:Quick way to check if the pandas series contains a negative value检查熊猫系列是否包含负值的快速方法
【发布时间】:2019-01-14 04:33:06
【问题描述】:

检查给定熊猫系列是否包含负值的最快方法是什么。

例如,对于下面的系列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 ?
  • 更短 - (s<0).any()
  • 更短 - any(s<0)

标签: python pandas series negative-number booleanquery


【解决方案1】:

使用any

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

【讨论】:

  • 在所有答案中,这是最快的。
  • @MohitMotwani 这取决于系列的大小和小于零的项目的索引。
  • @VanPeer 在这种情况下,是否有通用最快的答案?
  • 另外,与提到的其他方法相比,这种方法在哪里会慢?
【解决方案2】:

你可以使用Series.lt:

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

输出:

True

【讨论】:

    【解决方案3】:

    使用任何功能:

    >>>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
    

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2014-08-30
      相关资源
      最近更新 更多