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

Python while循环未遍历完整数据集的代码问题排查

代码问题排查:while循环未遍历完整数据集

你的代码无法遍历全量数据集,核心问题如下:

  • 直接导致循环提前终止的原因:循环体末尾写了break
    第一次循环跑完单条Hurst值计算、打印df.head(108)的逻辑后,会立刻触发break跳出整个while结构,后续所有迭代都不会执行。
  • 其余会导致运行异常的隐患:
    1. 循环边界设置错误:pandas行索引从0开始计数,数据集最后一行的索引是len(df)-1,你写的终止条件i <= len(df)+1就算删掉break,迭代到后期也会触发索引越界报错
    2. 赋值方式不规范:df['Hurst'].iloc[i-1]属于链式赋值,本身就存在赋值不生效、结果不可预期的问题,你之前直接设置pd.options.mode.chained_assignment = None关闭了pandas的风险警告,相当于把报错提示屏蔽了,很容易出现值算完了但没成功写入DataFrame的情况
    3. 循环内反复执行print(df.head(108))没有意义,全量运行时会重复打印成百上千次,严重拖慢代码运行速度

修正后代码

import numpy as np
import pandas as pd
from hurst import compute_Hc

df = pd.read_csv("AARTIIND.csv")
df['Hurst'] = np.nan

# 设定滚动窗口长度
window = 105
# 从第一个完整窗口结束的位置开始遍历,直到数据集末尾
for i in range(window, len(df)+1):
    # 用loc做单值赋值,避免链式赋值的问题
    df.loc[i-1, 'Hurst'] = compute_Hc(df['Close'].iloc[i-window:i], kind='price')[0]

# 遍历完成后统一打印结果查看
print(df.head(110))

优化提示:如果数据集体量较大,逐行循环的计算效率很低,可以改用pandas原生的rolling接口传入自定义计算函数,运行速度会有明显提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:57:15