如何通过单次HTTP请求结果批量更新Pandas DataFrame多列?
解决方案:单次请求生成多列数据
完全可以通过单次HTTP请求同时生成m0、m1、m2三列,避免重复请求带来的性能损耗。核心思路是每个ID仅发起一次HTTP请求,一次性提取接口返回的所有需要字段,再将结果拆分到对应列中。
修改后的代码实现
import pandas as pd def fetch_all_fields(id): # 单次请求获取完整数据 response = pd.read_json(f"http://localhost:3000/{id}") h_data = response.get('H', {}) # 一次性返回三个字段,默认值为"X" return { 'm0': h_data.get('M0', "X"), 'm1': h_data.get('M1', "X"), 'm2': h_data.get('M2', "X") } # 将函数应用到id列,得到包含三个字段的Series,再转为DataFrame合并到原数据 d[['m0', 'm1', 'm2']] = d['id'].apply(fetch_all_fields).apply(pd.Series)
代码说明
- 定义
fetch_all_fields函数:每个ID仅调用一次接口,解析返回的JSON后,一次性提取M0、M1、M2三个字段,同时设置默认值"X"。 - 通过
apply将函数作用于id列,得到一个包含字典的Series,再用apply(pd.Series)将字典拆分为三列,直接赋值给原DataFrame的对应列。
这种方式将原本的3次请求压缩为1次,在数据量较大时能显著降低HTTP请求开销,提升处理速度。
内容的提问来源于stack exchange,提问作者WoJ
相关产品推荐
相关产品推荐

