我正在尝试计算'xyz'
列中小于x
但大于y
的元素的数量。
a= df['xyz']
df[1/3 < a < 2/3].count()
但是,这给了我
ValueError:系列的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。
答案 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()