Python如何对大型DataFrame每100行批量应用自定义函数
分批调用接口提取高程数据实现方案
不需要逐行遍历,直接按固定批次大小切片遍历原DataFrame即可,实现逻辑如下:
核心实现代码
假设你的自定义高程函数my_function接收单批次DataFrame输入,返回对应长度的高程值列表:
import pandas as pd # 配置单批次最大请求量 BATCH_SIZE = 100 # 存储所有批次返回的高程结果 elevation_result = [] for i in range(0, len(df), BATCH_SIZE): # 截取当前批次的100条数据(最后一批不足100条会自动取剩余所有) current_batch = df[i:i+BATCH_SIZE] # 调用高程提取函数 batch_elev = my_function(current_batch) # 追加当前批次结果到总列表 elevation_result.extend(batch_elev) # 合并所有结果到原DataFrame df["elevation"] = elevation_result
如果你的my_function返回带索引的DataFrame格式结果,可以用更稳妥的拼接方式,避免索引错位:
import pandas as pd BATCH_SIZE = 100 batch_res_list = [] for i in range(0, len(df), BATCH_SIZE): current_batch = df[i:i+BATCH_SIZE] batch_res = my_function(current_batch) batch_res_list.append(batch_res) # 合并所有批次结果后和原DataFrame按索引拼接 all_batch_res = pd.concat(batch_res_list) df = pd.concat([df, all_batch_res], axis=1)
优化建议
- 可在批次循环中增加异常捕获和重试逻辑,避免单批次接口请求失败导致整个任务中断
- 若接口有QPS限制,可在每批次请求结束后增加
time.sleep()延时,控制请求频率
内容的提问来源于stack exchange,提问作者Joehat
相关产品推荐
相关产品推荐

