是否有一种方法可以计算列中布尔值的出现次数而不必遍历DataFrame?
做类似
df[df["boolean_column"]==False]["boolean_column"].sum()
由于False的值为0,因此将不起作用,因此零之和将始终返回0。
很显然,您可以通过遍历该列并进行检查来计数出现的次数,但是我想知道是否有一种pythonic的方法来做到这一点。
答案 0 :(得分:3)
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
要分别计算True
或False
的值,请不要与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