在数据框的列中计算True / False的出现次数

时间:2018-11-21 15:48:27

标签: python pandas

是否有一种方法可以计算列中布尔值的出现次数而不必遍历DataFrame?

做类似

df[df["boolean_column"]==False]["boolean_column"].sum()

由于False的值为0,因此将不起作用,因此零之和将始终返回0。

很显然,您可以通过遍历该列并进行检查来计数出现的次数,但是我想知道是否有一种pythonic的方法来做到这一点。

7 个答案:

答案 0 :(得分:3)

使用pd.Series.value_counts()

componentDidMount() {
this.interval = setInterval(() => this.getData(), 10000);
this.getData();
}

componentWillUnMount() {
clearInterval(this.interval);
}

getData = () => {
//data requests
}

如果要分别计算>> df = pd.DataFrame({'boolean_column': [True, False, True, False, True]}) >> df['boolean_column'].value_counts() True 3 False 2 Name: boolean_column, dtype: int64 False,可以使用True + pd.Series.sum()

~

答案 1 :(得分:1)

您可以简单地总结一下:

sum(df["boolean_column"])

这将找到“ True”元素的数量。

len(df["boolean_column"]) - sum(df["boolean_column"])

将产生“假”元素的数量。

答案 2 :(得分:1)

对于Pandas,自然的方法是使用value_counts

df = pd.DataFrame({'A': [True, False, True, False, True]})

print(df['A'].value_counts())

# True     3
# False    2
# Name: A, dtype: int64

要分别计算TrueFalse的值,请不要与True / False进行明确比较,只需sum并通过{取反布尔值即可。 {1}}计算~个值:

False

之所以可行,是因为print(df['A'].sum()) # 3 print((~df['A']).sum()) # 2 bool的子类,并且该行为也适用于Pandas系列/ NumPy数组。

或者,您可以使用NumPy计算计数:

int

答案 3 :(得分:1)

df.isnull() 

返回一个布尔值。 True表示缺少值。

df.isnull().sum() 

返回True值的列式求和。

df.isnull().sum().sum() 

返回不包含NA元素的总数。

答案 4 :(得分:1)

我在这里找不到我真正需要的东西。我需要True和False出现的次数来进行进一步的计算,所以我使用了:

true_count = (df['column']).value_counts()[True]
False_count = (df['column']).value_counts()[False]

其中df是您的DataFrame,column是具有布尔值的列。

答案 5 :(得分:0)

此替代方法也适用于多列和/或多行。

df[df==True].count(axis=0)

将为您提供每列True个值的总数。对于逐行计数,请设置axis=1

df[df==True].count().sum()

最后添加一个sum()将使您在整个DataFrame中获得总数。

答案 6 :(得分:0)

如果您在DataFrame中有一个带有布尔值的列,或者甚至更有趣,如果您没有它,但是想要找到满足特定条件的列中的值数,则可以尝试这样(例如,我使用<=):

(df['col']<=value).value_counts()

括号创建具有#个True / False值的元组,您也可以将其用于其他计算,访问该元组,即使不创建其他变量,也为[False]计数添加[0],为True计数添加[1]:< / p>

(df['col']<=value).value_counts()[0] #for falses
(df['col']<=value).value_counts()[1] #for trues