You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于DataFrame中Arm列首次出现的指定值生成Response列

解决方案

直接利用Pandas的内置方法可以高效实现需求,无需嵌套循环:

key = [1, 2, 3, 4]
# 生成Response列:Arm在key中且首次出现标记1,否则0
df['Response'] = ((df['Arm'].isin(key)) & (~df['Arm'].duplicated())).astype(int)

代码解释

  • df['Arm'].isin(key):判断每行Arm值是否在目标key列表中,返回布尔序列
  • ~df['Arm'].duplicated():duplicated()会将重复出现的行(除首次出现的行)标记为True,取反后仅首次出现的行标记为True
  • 用&做逻辑与运算,仅同时满足「在key中」和「首次出现」的行结果为True,最后通过astype(int)将布尔值转为1/0

结果验证

运行后生成的Response列完全符合预期:

AnimalArmResponse
121
141
131
130
111
110

原代码问题分析

你之前的代码仅判断了Arm是否在key中,没有处理重复出现的情况,因此所有在key中的行都会被标记为1,无法区分首次/重复出现。

内容的提问来源于stack exchange,提问作者Kshtj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:20:22