如何用Python读取Excel的external_id列转为列表传入SDK参数
你现有代码的问题在于:x.append(df['external_id'])是将整列数据作为单个元素存入列表,最终得到的是嵌套结构,不符合接口要求的一维id列表格式,按以下方式修改即可实现需求:
完整实现步骤
1. 修正Excel列读取逻辑,生成符合要求的id列表
import pandas as pd # 读取Excel的Sheet1表 df = pd.read_excel('abc.xlsx', sheet_name='Sheet1') # 将external_id列转为一维字符串列表,可按需添加.drop_duplicates()去除重复id external_id_list = df['external_id'].astype(str).tolist()
2. 直接传入SDK接口获取数据
ps = c.datapoints.retrieve(external_id=external_id_list)
可选扩展:id数量过多时分批请求
如果你的SDK接口对单次传入的id数量有限制,可以用分批请求再合并结果的方式处理:
import pandas as pd # 第一步读取id列表和上面一致 df = pd.read_excel('abc.xlsx', sheet_name='Sheet1') external_id_list = df['external_id'].astype(str).tolist() batch_size = 100 # 可根据接口限制调整单次请求的id数量 all_batch_res = [] for idx in range(0, len(external_id_list), batch_size): # 切分当前批次的id current_batch = external_id_list[idx:idx+batch_size] # 请求当前批次数据 batch_data = c.datapoints.retrieve(external_id=current_batch) all_batch_res.append(batch_data) # 合并所有批次的结果表,自动按timestamp列对齐 final_result = pd.concat(all_batch_res, axis=1) # 去除重复的timestamp列 final_result = final_result.loc[:, ~final_result.columns.duplicated()]
内容的提问来源于stack exchange,提问作者ZZZSharePoint
相关产品推荐
相关产品推荐

