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

如何对DataFrame按每50元素分批迭代并执行测试?

分批处理DataFrame的优化方案

针对你需要每50条数据执行一次测试的需求,先指出原代码存在的问题,再提供两种可行的解决方案:

原代码的核心问题

  1. 处理完50条数据后未清空存储列表,导致后续数据持续累加,只会触发一次批次处理逻辑
  2. 最后一批不足50条的数据无法被处理
  3. iterrows()在处理63万条数据时效率极低,不适合大规模数据集

方法1:修正原循环逻辑

适合需要逐行处理数据再执行批次计算的场景:

import numpy as np

mylist_data = []
mylist1_data = []
batch_size = 50

for index, row in df_.iterrows():
    mylist_data.append(row.distance)
    mylist1_data.append(row.day_night)
    
    # 达到批次大小,执行测试并重置列表
    if len(mylist_data) == batch_size:
        xmean = np.mean(mylist_data)
        ymean = np.mean(mylist1_data)
        
        # 此处编写你的测试逻辑,比如结果输出、指标计算等
        print(f"批次结束索引 {index}: distance均值 = {xmean}, day_night均值 = {ymean}")
        
        # 重置列表,准备下一批数据
        mylist_data = []
        mylist1_data = []

# 处理最后一批不足50条的剩余数据
if mylist_data:
    xmean = np.mean(mylist_data)
    ymean = np.mean(mylist1_data)
    print(f"最后批次(数量 {len(mylist_data)}): distance均值 = {xmean}, day_night均值 = {ymean}")

方法2:使用pandas分组(高效推荐)

针对大规模数据集,利用pandas的向量化操作替代逐行迭代,效率提升显著:

import pandas as pd

batch_size = 50
# 生成批次分组键:每50条数据归为一组
df_['batch'] = df_.index // batch_size

# 按批次分组处理
for batch_num, group in df_.groupby('batch'):
    xmean = group['distance'].mean()
    ymean = group['day_night'].mean()
    
    # 此处编写你的测试逻辑
    print(f"批次 {batch_num}: distance均值 = {xmean}, day_night均值 = {ymean}")

# 可选:删除临时生成的batch列
df_.drop('batch', axis=1, inplace=True)

两种方法对比

  • 方法1:逻辑直观,适合需要逐行预处理数据的场景,但处理63万条数据速度较慢
  • 方法2:利用pandas内置分组机制,速度快、代码简洁,是大规模数据集的最优选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:36:18