【问题标题】:Count number of elements in a column greater than x but smaller than y计算列中大于 x 但小于 y 的元素数
【发布时间】:2018-11-23 19:03:01
【问题描述】:

我正在尝试计算列'xyz' 中小于x 但大于y 的元素数。

a= df['xyz'] 
df[1/3 < a < 2/3].count()

但是,这给了我:

ValueError:Series 的真值不明确。使用a.empty, a.bool()、a.item()、a.any() 或 a.all()。

【问题讨论】:

  • np.sum((df['xyz'] &gt; y) &amp; (df['xyz'] &lt; x)).
  • 我认为这里没有足够的信息来给出明确的答案
  • df 是熊猫数据框还是列表?无法区分
  • 谢谢! df 是一个数据框

标签: python pandas series


【解决方案1】:

没有必要对您的数据框进行子集化。只需对布尔系列求和:

res = df['xyz'].between(1/3, 2/3, inclusive=False).sum()

x &lt; a &lt; y 等链式比较适用于常规 Python 标量,而不适用于需要矢量化操作的 Pandas 对象。

【讨论】:

    【解决方案2】:
    a= df['xyz'] 
    df[(a < 2/3) & (a > 1/3)].count()
    

    【讨论】:

      【解决方案3】:

      这将为您提供正确的 df:

      mask = (df['xyz'] > min) & (df['xyz'] <= max)
      df = df[mask]
      

      然后:

      len(df) or df.count() or df.shape[0] 
      

      或者只是:

        sum(mask)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-06
        • 2019-06-14
        • 2014-07-13
        • 2023-03-03
        • 2017-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多