python count dataframe列值满足条件

时间:2018-05-26 06:12:12

标签: python python-3.x pandas

什么是更优雅的写作方式:

df[df['income'] > 0].count()['income']

我想简单地计算满足条件的列值的数量(在这个例子中,条件只是大于零,但我想要一种适用于任何条件或条件集的方法)。如果列名称不需要在表达式中显示两次,那么显然更优雅。应该很容易。

1 个答案:

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