Python/Pandas - For循环只记录最终迭代
Python/Pandas - For loop only recording final iteration
强制性警告 - Python 和 Pandas 的新内容。
我在执行仅 returns 列表中最后一个值的 for 循环时遇到一些困难。
我有一个 .csv 文件,其中包含我想从 运行 到 CanvasAPI 到 post 用户分数的信息。 .csv 布局为:
Name user_id Score
0 Name_0 7454 90.0
1 Name_1 7075 96.0
2 Name_2 7377 76.0
3 Name_3 7259 49.0
4 Name_4 7294 48.0
5 Name_5 7491 76.5
我执行循环的代码是:
canvas = Canvas(API_URL, API_KEY)
course = canvas.get_course(9997)
assignment = course.get_assignment(78290)
userlist = [canvas.get_user(user) for user in df['user_id']]
length1 = len(userlist)
for i in range(length1):
(userlist[i])
scorelist = df['Score']
length2 = len(scorelist)
for x in range(length2):
(scorelist[x])
submission = assignment.get_submission(userlist[i])
submission.edit(submission={'posted_grade': scorelist[x]})
循环成功 运行s,但实际上只有 .csv 的最后一行被评分(对于 Name_5)。我错过了什么?非常感谢任何帮助。
问题出在最后一个for循环中。
for x in range(length2):
(scorelist[x])
每次循环迭代,scorelist[x]都会是x的最新值。所以在执行结束时,scorelist[x] 将是 x 的最后一个值。
每次循环迭代时,您都需要保存 scorelist[x] 的值。一种方法是将值附加到列表中:
scores = []
for x in range(length2):
scores.append(scorelist[x])
然后您需要更改最后的提交以发送所有分数而不是最后一个分数。
for i in range(len(userlist)):
submission = assignment.get_submission(userlist[i])
submission.edit(submission={'posted_grade': scores[i]})
有更简洁的方法可以做到这一点,但我尝试尽可能少地修改您的代码。
强制性警告 - Python 和 Pandas 的新内容。
我在执行仅 returns 列表中最后一个值的 for 循环时遇到一些困难。
我有一个 .csv 文件,其中包含我想从 运行 到 CanvasAPI 到 post 用户分数的信息。 .csv 布局为:
Name user_id Score
0 Name_0 7454 90.0
1 Name_1 7075 96.0
2 Name_2 7377 76.0
3 Name_3 7259 49.0
4 Name_4 7294 48.0
5 Name_5 7491 76.5
我执行循环的代码是:
canvas = Canvas(API_URL, API_KEY)
course = canvas.get_course(9997)
assignment = course.get_assignment(78290)
userlist = [canvas.get_user(user) for user in df['user_id']]
length1 = len(userlist)
for i in range(length1):
(userlist[i])
scorelist = df['Score']
length2 = len(scorelist)
for x in range(length2):
(scorelist[x])
submission = assignment.get_submission(userlist[i])
submission.edit(submission={'posted_grade': scorelist[x]})
循环成功 运行s,但实际上只有 .csv 的最后一行被评分(对于 Name_5)。我错过了什么?非常感谢任何帮助。
问题出在最后一个for循环中。
for x in range(length2):
(scorelist[x])
每次循环迭代,scorelist[x]都会是x的最新值。所以在执行结束时,scorelist[x] 将是 x 的最后一个值。
每次循环迭代时,您都需要保存 scorelist[x] 的值。一种方法是将值附加到列表中:
scores = []
for x in range(length2):
scores.append(scorelist[x])
然后您需要更改最后的提交以发送所有分数而不是最后一个分数。
for i in range(len(userlist)):
submission = assignment.get_submission(userlist[i])
submission.edit(submission={'posted_grade': scores[i]})
有更简洁的方法可以做到这一点,但我尝试尽可能少地修改您的代码。