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

基于DataFrame某列条件子串创建新列时numpy select返回全零原因咨询

问题原因

你编写的numpy select方案返回全0值,核心原因是条件构造不符合要求:
pandas中直接使用'KNC-' in df['Tracking Code']这类语法时,不会逐行判断列中每个元素是否包含对应子串,仅会判断该字符串是否为列中的独立元素,最终返回的是单个布尔值,而非np.select要求的、和DataFrame行数长度一致的逐行布尔序列。当所有条件都不满足时,np.select默认返回0,因此你得到了全0的结果。

修正后的numpy select实现

如需实现和你现有可行方案一致的逻辑(忽略大小写、未匹配返回空字符串),可调整代码如下:

import numpy as np

conditions = [
    df['Tracking Code'].str.contains('KNC-', case=False, na=False),
    df['Tracking Code'].str.contains('SL-', case=False, na=False),
    df['Tracking Code'].str.contains('SNP-', case=False, na=False),
    df['Tracking Code'].str.contains('EMC-', case=False, na=False)
]
values = ['Paid Search', 'Display', 'Social', 'Email']
# default参数指定未匹配时的返回值,和你原有逻辑对齐
df['Marketing Channel'] = np.select(conditions, values, default='')

补充说明:str.contains的na=False参数用于处理列中的空值场景,避免空值返回NaN导致条件判断出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:39:03