python计数数据框列值满足条件

mat*_*ter 3 python python-3.x pandas

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

df[df['income'] > 0].count()['income']
Run Code Online (Sandbox Code Playgroud)

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

小智 5

df = pd.DataFrame([0, 30000, 75000, -300, 23000], columns=['income'])
print(df)
   income
0       0
1   30000
2   75000
3    -300
4   23000
Run Code Online (Sandbox Code Playgroud)

如果您想对列中满足比仅仅为正数稍微复杂的条件的值进行计数,例如“值在 5000 到 25000 的范围内”,您可以使用两种方法。

首先,使用布尔索引,

((df['income'] > 5000) & (df['income'] < 25000)).sum()
Run Code Online (Sandbox Code Playgroud)

其次,对系列的每一行应用一个函数,

df['income'].map(lambda x: 5000 < x < 25000).sum()
Run Code Online (Sandbox Code Playgroud)

请注意,第二种方法允许任意复杂的条件,但比第一种方法慢得多,第一种方法在底层数组上使用低级操作。有关更多信息,请参阅有关布尔索引的文档。