如何统计Pandas DataFrame全表中值为'?'的元素总数?
统计Pandas DataFrame内所有取值为"?"的元素总数
你现有的手写循环代码仅针对单列做判断,既无法覆盖全表统计场景,在大型DataFrame上运行效率也很低,直接用Pandas内置的向量化方法即可快速实现需求。
最简全表统计实现
不需要写逐行遍历的循环,两行代码就能算出全表"?"的总数量:
# 逐元素判断是否为"?",两次求和得到全表总计数 total_question_mark = (df == "?").sum().sum() print(f"全表'?'总数量:{total_question_mark}")
实现逻辑:
df == "?"会生成和原DataFrame尺寸完全一致的布尔矩阵,元素为True代表对应位置值是"?",否则为False- 第一次
.sum()会按列统计每列中True的个数,返回以列名为索引的统计结果Series - 第二次
.sum()对单列统计结果求和,得到全表总数量
额外场景:查看每列的"?"分布
如果需要同时知道每一列分别有多少个"?",可以先按列统计再算总量:
# 逐列统计"?"数量 count_by_column = (df == "?").sum() print("各列'?'数量:") print(count_by_column) # 总数量直接对列统计结果求和 total = count_by_column.sum()
特殊情况适配
如果表内的"?"可能带前后空格(比如" ?"、"? "这类脏数据),可以先对字符串列做清洗再统计,避免漏判:
# 仅对object类型(字符串类)的列做去空格处理,再统计 clean_df = df.apply(lambda col: col.str.strip() if col.dtype == "object" else col) total_question_mark = (clean_df == "?").sum().sum()
内容的提问来源于stack exchange,提问作者Adita Rita
相关产品推荐
相关产品推荐

