如何统计Pandas DataFrame中指定单个值(如“No”)的出现次数?
统计Pandas DataFrame中"No"的出现次数
嗨,我来帮你快速搞定这个需求!不用借助df.apply(pd.value_counts)统计所有值再筛选,直接用下面几种更高效的方法就能精准统计"No"的出现次数:
方法一:布尔掩码两层求和(最简洁)
直接把整个DataFrame和"No"做相等判断,生成布尔型DataFrame后,先按列求和再全局求和:count_no = (df == "No").sum().sum() print(f'"No"的出现次数为{count_no}')解释:
df == "No"会生成和原DataFrame同结构的布尔表,True代表对应位置是"No";第一层.sum()统计每列里"No"的数量,第二层.sum()把所有列的结果加总,得到全局总次数。方法二:堆叠成Series后统计
先把DataFrame转成一维Series,再针对性统计"No"的次数:count_no = df.stack().value_counts().get("No", 0) print(f'"No"的出现次数为{count_no}')解释:
df.stack()会把所有行、列的元素合并成一个Series;.value_counts()统计各值的出现次数,.get("No", 0)能避免"No"不存在时报错,直接返回0。方法三:用Numpy提升大数据效率
如果你的DataFrame数据量很大,用Numpy的函数会更快:import numpy as np count_no = np.count_nonzero(df.values == "No") print(f'"No"的出现次数为{count_no}')解释:
df.values将DataFrame转为Numpy数组,np.count_nonzero直接统计数组中等于"No"的元素数量,运算效率比纯Pandas方法更高。
小提示:如果DataFrame里有缺失值(NaN),这些方法都不会把NaN误判为"No",完全不用担心干扰统计结果~
内容的提问来源于stack exchange,提问作者Korzak
相关产品推荐
相关产品推荐

