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

Dataframe遍历问题:仅输出首个符合条件元素,如何输出全部?

问题分析与修正代码

原代码存在几个关键问题导致只能输出首个匹配结果:

  • 遍历方式错误:for i in df 实际是遍历DataFrame的列名,而非行索引,逻辑完全偏离需求。
  • 循环内强制重置i=0:每次循环都把索引拉回第0行,根本没遍历后续行。
  • 过早终止循环:两个条件判断里的break语句会在找到第一个匹配项后直接退出循环。
  • 错误的else分支:原else会在每一行不满足条件时输出提示,导致大量重复无效信息。

修正后的代码:

div = "Divergence spotted at "
found = False

# 遍历行索引,注意要留最后一行避免i+1越界
for i in range(len(df) - 1):
    if (df.High[i] < df.High[i+1]) and (df.RSI[i] > df.RSI[i+1]):
        print(f'{div}{i}')
        found = True
    elif (df.High[i] > df.High[i+1]) and (df.RSI[i] < df.RSI[i+1]):
        print(f'{div}{i}')
        found = True

# 整个循环结束后如果没找到任何匹配,再输出提示
if not found:
    print("no divergence spotted")

关键修改说明:

  • 改用range(len(df)-1)遍历行索引,确保能安全访问i+1位置的元素,避免索引越界。
  • 把div的定义移到循环外,无需重复初始化。
  • 移除所有break语句,让循环完整遍历所有符合条件的行。
  • 新增found标记,仅在整个循环结束后未找到任何匹配时才输出“未发现背离”的提示,避免冗余输出。

内容的提问来源于stack exchange,提问作者A K S H A Y y K U M A R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:45:42