You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中不遍历行统计满足条件的行数?

问题描述

我有如下Pandas DataFrame:

data = { 'number':['one','two','three'],
         'l_min_x':[6,6,6],
         'l_max_x':[12,18,15],
         'r_min_x':[6,6,6],
         'r_max_x':[17,19,15]}
         
datadf= pd.DataFrame(data)
print(datadf)

输出结果为:

number  l_min_x  l_max_x  r_min_x  r_max_x
0    one        6       12        6       17
1    two        6       18        6       19
2  three        6       15        6       15

需要完成两个统计需求,且希望避免逐行遍历:

  • 统计l_min_x小于7且l_max_x大于17的行数,本例结果为1
  • 统计r_min_x小于8且r_max_x大于16的行数,本例结果为2
解决方案

完全不需要逐行遍历,利用Pandas的向量化布尔索引结合sum()方法就能高效完成统计,这也是Pandas推荐的高效处理方式:

1. 第一个统计需求

count1 = ((datadf['l_min_x'] < 7) & (datadf['l_max_x'] > 17)).sum()
print(count1)  # 输出:1

2. 第二个统计需求

count2 = ((datadf['r_min_x'] < 8) & (datadf['r_max_x'] > 16)).sum()
print(count2)  # 输出:2

原理说明

  • 单个条件如datadf['l_min_x'] < 7会生成一个布尔类型的Series,每个元素对应该行是否满足该条件
  • 使用&连接多个布尔条件时,必须用括号包裹每个条件,避免运算符优先级导致的错误
  • 布尔值在求和时会被自动转换为整数(True为1,False为0),sum()的结果就是符合条件的总行数

内容的提问来源于stack exchange,提问作者KansaiRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:31:09