计算一列中大于x但小于y的元素数量

时间:2018-11-23 09:23:45

标签: python pandas series

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

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

但是,这给了我

  

ValueError:系列的真值不明确。使用空   a.bool(),a.item(),a.any()或a.all()。

3 个答案:

答案 0 :(得分:2)

不需要子集数据框。只需对布尔序列求和:

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

x < a < y这样的链式比较适用于常规的Python标量,而不适用于需要向量化操作的Pandas对象。

答案 1 :(得分:1)

这将为您提供真实的df:

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

然后:

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

或者只是:

  sum(mask)

答案 2 :(得分:1)

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