如何用Pandas遍历CSV行调用CanvasAPI批量获取Canvas用户名
问题核心
canvas.get_user() 仅支持传入单个用户ID的整数类型值,你之前三次尝试传入的参数均不符合接口要求,才会触发各类报错:
- 第一次尝试:自定义的
user_id()函数无返回值,默认返回None,传入接口触发类型错误 - 第二次尝试:传入的
df['user_id'][0:5]是多值组成的Pandas Series序列,不是单值,接口无法识别 - 第三次尝试:自定义函数无返回值得到
None,转数值后得到NaN,同样不符合接口参数要求
正确实现代码
方案1:遍历打印所有用户信息
from canvasapi import Canvas import pandas as pd # 此处补充你自己的Canvas实例化代码(你之前单条调用正常,已有对应的API_URL、API_KEY配置) # canvas = Canvas(你的API地址, 你的API密钥) df = pd.read_csv("Test2.csv") # 逐行遍历user_id调用接口 for uid in df['user_id']: print(canvas.get_user(uid))
方案2:把结果存回表格导出
如果你需要把拉取到的信息保存下来,可以直接用Pandas的apply方法批量处理,最后导出新CSV:
# 全量拉取用户信息存到新列 df['full_info'] = df['user_id'].apply(lambda x: str(canvas.get_user(x))) # 也可以拆分出单独的姓名字段和ID字段 df['api_return_name'] = df['full_info'].str.split(' \(', expand=True)[0] df['api_return_id'] = df['full_info'].str.split(' \(', expand=True)[1].str.strip(')') # 导出结果到本地 df.to_csv("user_result.csv", index=False)
内容的提问来源于stack exchange,提问作者Daniel Hutchinson
相关产品推荐
相关产品推荐

