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

如何按14为步长迭代DataFrame行,实现固定间隔批量取数?

按14为步长迭代DataFrame行的修复方案

问题根因

原有代码的问题在于:for index, row in df.iterrows() 中的index是每次迭代时自动从iterrows()生成器中获取的连续值,循环内部对index执行+14的赋值操作不会影响下一轮迭代拿到的index值,因此会输出连续索引。


修复方案

方案1:直接遍历步长索引(推荐,性能最优)

无需遍历所有行,直接生成目标步长的索引序列再切分即可:

# 生成0、14、28...的步长序列,覆盖整个DataFrame长度
for idx in range(0, len(df), 14):
    print(idx)
    # pandas行切片结果本身就是DataFrame,无需额外转换
    batch_df = df[idx:idx+14]
    # 此处添加对batch_df的处理逻辑

该方案避免了全量行遍历,性能远高于iterrows实现,适合各种数据量场景。如果你的DataFrame使用自定义非连续索引,建议替换为df.iloc[idx:idx+14]按位置切片,避免索引匹配错误。

方案2:保留iterrows逻辑(不推荐,性能差)

如果必须保留遍历行的写法,可以添加计数器做步长判断:

count = 0
for index, row in df.iterrows():
    if count % 14 == 0:
        print(index)
        batch_df = df[index:index+14]
        # 此处添加对batch_df的处理逻辑
    count += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03