如何将循环结果与API调用结果存入已有Pandas DataFrame
处理DataFrame中API调用结果的存储问题
输入DataFrame示例
external_id sw_1 sw_2 sw_3 Sw_55
期望输出示例
external_id : Status sw_1 :Hello Sw_1 sw_2 :Hello sw_2 sw_3 :hello sw_3 Sw_55 :Hello sw_55
现有代码
df = pd.read_csv(r'/Users/man/Desktop/input.csv') output_df = df.copy() output_df['Status'] = "" list2 = [] for i in df['external_id']: x = "Hello " + i list2.append(x) df1 = pd.DataFrame(list2) print(df1)
实际需求
输入DataFrame包含external_id字段,需要为每个external_id调用API,并将API调用结果(状态码与响应内容)存入该external_id对应的原DataFrame行中。
解决方案
你不需要额外创建新的DataFrame,直接将生成的结果列表赋值给已有DataFrame的Status列即可。以下是优化后的代码,包含示例逻辑和真实API调用的替换说明:
import pandas as pd # 若调用API需引入requests库 # import requests df = pd.read_csv(r'/Users/man/Desktop/input.csv') output_df = df.copy() status_list = [] for ext_id in df['external_id']: # -------------------------- # 替换为实际API调用逻辑示例: # response = requests.get(f"https://your-api-endpoint/{ext_id}") # api_result = f"Status Code: {response.status_code}, Response: {response.text}" # -------------------------- # 以下是匹配你期望输出的示例处理逻辑 # 统一id格式:首字母大写,其余小写 formatted_id = ext_id[0].upper() + ext_id[1:].lower() # 对应示例中的hello/Hello大小写差异,这里用首字母大写的Hello status_text = f"Hello {formatted_id}" status_list.append(status_text) # 直接将结果列表赋值给output_df的Status列 output_df['Status'] = status_list # 按期望格式打印输出 print("external_id : Status") for _, row in output_df.iterrows(): print(f"{row['external_id']} :{row['Status']}")
关键说明
- 直接复用已有DataFrame:无需新建
df1,将生成的status_list直接赋值给output_df['Status'],即可完成对应行的结果填充。 - API调用替换:把示例中的
status_text生成逻辑替换为真实的API调用代码,比如用requests库发起请求后,提取状态码和响应内容拼接成字符串。 - 格式处理:如果需要对
external_id做大小写统一(匹配你期望输出的格式),可以用字符串方法快速处理。
内容的提问来源于stack exchange,提问作者Sudarshan Waman
相关产品推荐
相关产品推荐

