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

Python For循环内嵌套IF语句为Pandas DataFrame新增列时elif不执行

问题根源

你代码的核心问题出在赋值逻辑上:

  • 遍历Agent列的每个值时,每次赋值都是直接修改整个AgentTag列,而非修改当前遍历对应的行。假设第一个遍历到的Agent值属于第一组,整个列会被直接全部设为Agent 1,就算后续遍历到其他组的Agent值,后续的赋值也会覆盖全列,最终全列的值由最后一个遍历到的Agent值所属分组决定,看起来就像只走了第一个分支。
  • 其次这种逐行遍历的写法在pandas中效率极低,数据量稍大就会非常慢,完全没必要用循环实现。

正确实现方案

方案1:字典映射(最简洁,推荐)

先构造Agent到AgentTag的映射字典,直接用map方法生成新列:

# 构造映射关系
agent_map = {
    "unez": "Agent 1",
    "rmbua": "Agent 1",
    "destrada": "Agent 1",
    "amateo": "Agent 1",
    "cmabelison": "Agent 1",
    "rverga": "Agent 2",
    "dpcaban": "Agent 2",
    "dgsugui": "Agent 2",
    "gmic": "Agent 3",
    "jdera": "Agent 3",
    "gras": "Agent 4",
    "mcsrra": "Agent 4",
    "jcawan": "Agent 5",
    "rmcola": "Agent 5",
    "mjgamo": "Agent 5",
    "ychaco": "Agent 6",
    "phondra": "Agent 6",
    "mmorang": "Agent 7",
    "vsin": "Agent 7",
    "pbong": "Agent 8"
}
# 生成新列
df_csrdata_2mos_Filtered_Done["AgentTag"] = df_csrdata_2mos_Filtered_Done["Agent"].map(agent_map)
print("AgentTag Done!")

未匹配到的Agent对应行的AgentTag会自动设为NaN,可后续按需填充默认值。

方案2:np.select(适合条件更复杂的场景)

如果后续分组逻辑需要调整得更复杂,可以用numpy的select方法实现:

import numpy as np

# 定义条件列表
conditions = [
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["unez", "rmbua", "destrada", "amateo", "cmabelison"]),
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["rverga", "dpcaban", "dgsugui"]),
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["gmic", "jdera"]),
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["gras", "mcsrra"]),
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["jcawan", "rmcola", "mjgamo"]),
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["ychaco", "phondra"]),
    df_csrdata_2mos_Filtered_Done["Agent"].isin(["mmorang", "vsin"]),
    df_csrdata_2mos_Filtered_Done["Agent"] == "pbong"
]
# 定义对应结果
choices = ["Agent 1", "Agent 2", "Agent 3", "Agent 4", "Agent 5", "Agent 6", "Agent 7", "Agent 8"]
# 生成新列,可修改default参数设置未匹配项的默认值
df_csrdata_2mos_Filtered_Done["AgentTag"] = np.select(conditions, choices, default=np.nan)
print("AgentTag Done!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:54:02