如何统计Pandas DataFrame中包含值-999的列数量
统计DataFrame中包含-999的列的数量
嘿,这个需求用Pandas几行代码就能轻松搞定,核心思路就是先判断每列是否存在目标值,再统计符合条件的列数。
直接上解决方案,假设你的DataFrame名为df,可以这么写:
# 统计至少包含一个-999的列的数量 target_column_count = df.isin([-999]).any().sum() print(target_column_count)
给你拆解下这段代码的逻辑:
df.isin([-999]):生成一个和原DataFrame结构完全一致的布尔矩阵,每个单元格如果等于-999就标记为True,否则为False。.any():对每一列做判断——只要该列里有一个True(也就是存在至少一个-999),就返回True,否则返回False。这一步会得到一个布尔Series,索引就是原DataFrame的列名。.sum():把布尔Series里的True累加起来(Python里True等价于1,False等价于0),最终结果就是你要的包含-999的列的总数。
用你给出的示例数据测试的话,代码如下:
import pandas as pd # 构造示例DataFrame data = { 'A': [1, -999, 3], 'B': [-999, 5, 6], 'C': [7, 8, 9] } df = pd.DataFrame(data) # 统计符合条件的列数 count = df.isin([-999]).any().sum() print(count) # 输出结果为2,和预期一致
如果之后需要检查其他特定值,只要把[-999]替换成目标值即可,这个逻辑完全通用。
内容的提问来源于stack exchange,提问作者Windstorm1981
相关产品推荐
相关产品推荐

