如何统计Pandas DataFrame指定列中值为特定整数的行数?
统计DataFrame中数值列指定值的行数
没问题,这几种方法都能帮你快速统计出x列值为数字1的行数,结果正好是3:
首先先还原你的DataFrame:
import pandas as pd df = pd.DataFrame({ 'x': [1, 1, 2, 3, 4, 5, 1], 'y': ['a', 'b', 'c', 'd', 'e', 'f', 'g'] })
方法一:布尔索引求和(最直观)
这是最常用的方式,通过布尔判断筛选出符合条件的行,再求和得到数量:
count = (df['x'] == 1).sum() print(count) # 输出:3
解释:df['x'] == 1会生成一个布尔Series,x等于1的位置为True(等价于1),其余为False(等价于0),sum()会直接计算这些布尔值的总和,也就是符合条件的行数。
方法二:用value_counts()统计频次
如果需要同时查看多个值的出现次数,这个方法很方便,单独提取1的次数即可:
count = df['x'].value_counts().get(1, 0) print(count) # 输出:3
解释:value_counts()会统计x列每个唯一值的出现次数,返回一个以值为索引的Series。get(1, 0)表示获取索引为1的对应值,如果x列中没有1,则返回0。
方法三:query()筛选后取行数
用类SQL的语法筛选行,再通过shape[0]获取行数:
count = df.query('x == 1').shape[0] print(count) # 输出:3
解释:query('x == 1')会筛选出x列等于1的所有行,返回一个新的DataFrame,shape[0]就是这个DataFrame的行数。
其实你不用纠结数字和字符串的差异,pandas里判断逻辑是一致的——数字直接写数值,字符串加引号即可(比如df['y'] == 'a'),核心都是通过布尔筛选或频次统计来得到行数。
内容的提问来源于stack exchange,提问作者Exige304




