什么是更优雅的写作方式:
df[df['income'] > 0].count()['income']
我想简单地计算满足条件的列值的数量(在这个例子中,条件只是大于零,但我想要一种适用于任何条件或条件集的方法)。如果列名称不需要在表达式中显示两次,那么显然更优雅。应该很容易。
答案 0 :(得分:2)
df = pd.DataFrame([0, 30000, 75000, -300, 23000], columns=['income'])
print(df)
income
0 0
1 30000
2 75000
3 -300
4 23000
如果您想计算符合稍微复杂条件的列中的值,而不仅仅是积极的,例如"值的范围是5000到25000",您可以使用两种方法。 / p>
首先,使用布尔索引,
((df['income'] > 5000) & (df['income'] < 25000)).sum()
其次,在系列的每一行上应用一个函数,
df['income'].map(lambda x: 5000 < x < 25000).sum()
请注意,第二种方法允许任意复杂的条件,但比在底层数组上使用低级操作的第一种方法要慢得多。有关详细信息,请参阅documentation on boolean indexing。