Pandas 1.5中按行统计指定列的True/False/Null数量
环境说明
适用于Pandas 1.5版本
我有如下结构的DataFrame(A、B、D列为可空布尔类型):
| A | B | C | D | | ----- | ----- | ----- | ----- | | False | True | 63.56 | True | | False | True | 57.13 | <NA> | | True | True | 87.31 | True | | False | <NA> | 71.09 | True | | False | False | 11.78 | False | | <NA> | False | 5.07 | True | | True | False | 5.11 | True | | False | False | 9.55 | True |
需要按行统计A、B、D三列中True、False、null的数量,得到结果如下:
| A | B | C | D | TrueCount | FalseCount | NullCount | | ----- | ----- | ----- | ----- | --------- | ---------- | --------- | | False | True | 63.56 | True | 2 | 1 | 0 | | False | True | 57.13 | <NA> | 1 | 1 | 1 | | True | True | 87.31 | True | 3 | 0 | 0 | | False | <NA> | 71.09 | True | 1 | 1 | 1 | | False | False | 11.78 | False | 0 | 3 | 0 | | <NA> | False | 5.07 | True | 1 | 1 | 1 | | True | False | 5.11 | True | 2 | 1 | 0 | | False | False | 9.55 | True | 1 | 2 | 0 |
请问是否存在类似Excel中COUNTIF()的方法,能实现类似伪代码df['TrueCount'] = df.COUNTIF(columns=['A','B','D'], True)的逻辑?
补充说明:数据量较大(10万+行),需考虑性能。
解决方案
Pandas中可以通过矢量化操作实现类似COUNTIF的功能,这种方式性能最优,完全适配10万+行的大数据量(避免使用行级apply,因为逐行处理速度极慢)。
核心思路是:针对目标列,用条件判断生成布尔矩阵,再按行求和得到计数。
完整代码实现
import pandas as pd # 构造示例DataFrame data = { 'A': [False, False, True, False, False, pd.NA, True, False], 'B': [True, True, True, pd.NA, False, False, False, False], 'C': [63.56, 57.13, 87.31, 71.09, 11.78, 5.07, 5.11, 9.55], 'D': [True, pd.NA, True, True, False, True, True, True] } df = pd.DataFrame(data).astype({'A': 'boolean', 'B': 'boolean', 'D': 'boolean'}) # 定义目标列 target_cols = ['A', 'B', 'D'] # 统计True数量 df['TrueCount'] = df[target_cols].eq(True).sum(axis=1) # 统计False数量 df['FalseCount'] = df[target_cols].eq(False).sum(axis=1) # 统计Null数量 df['NullCount'] = df[target_cols].isna().sum(axis=1) # 查看结果 print(df)
代码解释
df[target_cols].eq(True):生成布尔矩阵,对应位置为True表示原列值等于True,否则为False(包含Null);.sum(axis=1):按行求和,统计每行中True的个数,完全对应Excel中COUNTIF的计数逻辑;isna().sum(axis=1):直接统计每行中Null的数量。
这种方式基于Pandas底层矢量化运算,处理10万+行数据的速度比行级apply快数十倍,完全满足性能要求。
内容的提问来源于stack exchange,提问作者Xaree Lee
相关产品推荐
相关产品推荐

