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

如何在numpy条件逻辑的default段返回列值实现pandas新列赋值

问题原因

np.select要求conditions条件列表和choices返回值列表的长度必须一一对应,你的代码里定义了4个判断条件,但只提供了2个返回值,长度不匹配导致逻辑错误。另外需要注意列名大小写要和实际DataFrame的列名保持一致,你的示例DataFrame列名为大写COLOR,原代码用了小写color也可能触发报错。

修正方案

方案1:对齐条件和返回值长度

直接补全返回值列表,和4个条件一一对应:

import pandas as pd
import numpy as np

condition = [
    (df['COLOR'] == 'grey'),
    (df['COLOR'] == 'white'),
    (df['COLOR'] == 'orange'),
    (df['COLOR'] == 'pink')
]
result = ['black', 'black', 'red', 'red']
df['FINAL_COLOR'] = np.select(condition, result, default=df['COLOR'])

方案2:合并同结果条件(更简洁)

把返回相同结果的条件用isin合并,减少冗余代码:

import pandas as pd
import numpy as np

condition = [
    df['COLOR'].isin(['grey', 'white']),
    df['COLOR'].isin(['orange', 'pink'])
]
result = ['black', 'red']
df['FINAL_COLOR'] = np.select(condition, result, default=df['COLOR'])

两种方案的default参数直接传入原df['COLOR']即可实现不满足条件时保留原值的需求,运行后就能得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:36:01