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

pandas DataFrame调用apply结合if else条件判断不生效问题咨询

问题解答

原代码错误原因

  • 核心逻辑错位:apply调用自定义函数时,传入的row仅为sum_result_xxx列的单值,无法关联到当前行对应的frame值。且函数内部嵌套的for i in range(0,len(dd))循环会在首次迭代(i=0)时就触发判断返回,所有行的差值计算都误用了第0行的frame值,和当前行完全不匹配,自然无法触发正确的条件判断。
  • 设计冗余易出错:将函数定义嵌套在z的循环中,容易引发变量作用域类的隐性问题,且apply逐行调用的执行效率远低于pandas原生向量化操作。
  • 变量名混用:示例输入中定义的DataFrame名为df,后续赋值操作却写为dd,若实际代码存在变量名混用的问题,也会直接导致逻辑错误。

调整后代码说明

你更新后的向量化掩码写法符合pandas最佳实践,可正常得到预期结果:

  1. 通过布尔掩码直接批量筛选不同sum_result取值的行,避免逐行遍历,执行效率远高于apply写法
  2. 提前计算sum_result=2对应的首尾frame值,直接对整个frame列做批量差值计算,逻辑清晰无错位问题
  3. 移除了冗余的嵌套循环和函数定义,可维护性更强

运行该代码即可得到你预期的输出:sum_result_ICV对应的结果列中,frame 1-3、8-10返回NG-ICV,11-14返回ReviewNG-ICV,完全匹配你的业务逻辑要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:54:03