如何按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
相关产品推荐
相关产品推荐

