Pandas统计列中属于指定数值列表的行数实现咨询
统计符合指定数值范围的DataFrame行数方案
你之前的写法报错的核心原因是:value_counts() 方法的入参不支持直接传入匹配目标列表,该方法第一个参数为normalize,用来控制是否返回占比而非计数,语法不匹配自然运行失败。
核心实现逻辑
构造布尔判断序列,判断列中每一行取值是否属于目标范围,对布尔序列求和即可得到符合条件的总行数(布尔值True对应数值1,False对应数值0)。
适配你场景的两种解决方法
- 方法1:转换列数据为数值类型后匹配
因为列中存在字符串类型的异常值,转换时设置errors='coerce'把无法转为数值的内容转成空值,避免报错:import pandas as pd num_range = list(range(200,281, 5)) # 转换列类型,非数值内容转为NaN col_numeric = pd.to_numeric(df['COL_1'], errors='coerce') # 统计符合条件的行数 count = col_numeric.isin(num_range).sum() - 方法2:将目标数值范围转为字符串格式匹配
不需要修改原列数据,直接把目标列表转成字符串后匹配即可,适配你排查到的兼容方案:# Python2.7中map直接返回列表 target_range = map(str, range(200, 281, 5)) count = df['COL_1'].isin(target_range).sum()
注意事项
以上两种方法都会自动跳过空值、UNREADABLE/NOT_PASSIVE这类非目标字符串,最终返回的就是符合要求的总行数。
内容的提问来源于stack exchange,提问作者Boston Co
相关产品推荐
相关产品推荐

