Luc*_*rgi 14 python counter boolean series pandas
有没有办法计算列中布尔值的出现次数而不必循环遍历 DataFrame?
做类似的事情
df[df["boolean_column"]==False]["boolean_column"].sum()
Run Code Online (Sandbox Code Playgroud)
将不起作用,因为 False 的值为 0,因此零之和将始终返回 0。
显然,您可以通过遍历列并检查来计算出现次数,但我想知道是否有一种pythonic 方法可以做到这一点。
use*_*881 27
>> df = pd.DataFrame({'boolean_column': [True, False, True, False, True]})
>> df['boolean_column'].value_counts()
True 3
False 2
Name: boolean_column, dtype: int64
Run Code Online (Sandbox Code Playgroud)
如果你想单独计数False,True你可以使用pd.Series.sum()+ ~:
>> df['boolean_column'].values.sum() # True
3
>> (~df['boolean_column']).values.sum() # False
2
Run Code Online (Sandbox Code Playgroud)
对于 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
Run Code Online (Sandbox Code Playgroud)
要单独计算True或False值,不要与True/False显式比较,只需sum使用反向布尔值~来计算False值:
print(df['A'].sum()) # 3
print((~df['A']).sum()) # 2
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它bool是 的子类int,并且该行为也适用于 Pandas 系列/NumPy 数组。
或者,您可以使用 NumPy 计算计数:
print(np.unique(df['A'], return_counts=True))
# (array([False, True], dtype=bool), array([2, 3], dtype=int64))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33157 次 |
| 最近记录: |