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

如何根据pandas DataFrame的category列规则替换outcome列对应值

错误原因说明

  1. 遍历写法报错:df.loc[i, 'category']取到的是单个字符串,只有 pandas Series 才支持.str访问器,单个字符串直接用==判断相等、in判断包含即可。另外遍历行的写法在数据量大时效率极低,不推荐使用。
  2. map写法失效:
    • 列顺序写反:你需要根据category列的值做映射,而不是outcome列
    • 赋值对象错误:你把映射结果赋值给了category列,而非需要修改的outcome列
    • 未处理匹配缺失:map方法对不在映射字典里的键默认返回NaN,没有做回填保留原值的处理

解决方案

场景1:仅匹配category完全等于指定值的情况

如果你需要严格匹配category值和字典的键,直接修正map写法,加fillna回填原有outcome值即可:

mapping = {'High':'Yes', 'Central':'Maybe', 'Low':'No'}
df['outcome'] = df['category'].map(mapping).fillna(df['outcome'])

匹配不到的LowCentral行会直接保留原有的outcome值。

场景2:需要按关键词包含规则匹配的情况

如果你是要匹配category包含对应关键词就算命中(比如LowCentral包含Central就映射为Maybe),用np.select实现更灵活:

import numpy as np
# 按优先级排列匹配条件
conditions = [
    df['category'].str.contains('High'),
    df['category'].str.contains('Central'),
    df['category'].str.contains('Low')
]
# 条件对应要设置的outcome值
choices = ['Yes', 'Maybe', 'No']
# default参数指定未匹配时保留原有outcome
df['outcome'] = np.select(conditions, choices, default=df['outcome'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:05