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

Python数据科学新手求助:Pandas中numpy.where多条件逻辑实现问题

解决你的numpy.where多条件问题

嘿,作为Python数据科学新手遇到这种问题太正常了,我来帮你捋清楚哪里出问题,再给你修正后的代码~

首先看你写的np.where部分,这里犯了一个常见小错误:多个条件不能用逗号分隔,np.where的第一个参数需要是单一的布尔数组,多个条件得用逻辑运算符(&表示“且”,|表示“或”)连接,而且每个条件都要加括号,避免运算符优先级搞乱逻辑。

另外你函数里用var4指定新列名的思路是对的,咱们把条件部分修正就行。假设你想要的是三个条件同时满足(var1等于'true'、var3等于'eggs'、var2小于10)时返回'hello',否则返回'zello',修正后的代码如下:

import pandas as pd
import numpy as np

# 你的原始数据
raw_data = {'var1': ['true','false','ture'],'var2': [10,20,50], 'var3':['eggs','milk','eggs']}
df = pd.DataFrame(raw_data, columns = ['var1','var2','var3'])

def my_fun(var1, var2, var3, var4):
    # 用&连接多条件,每个条件加括号确保逻辑正确
    df[var4] = np.where(
        (df[var1] == 'true') & (df[var3] == 'eggs') & (df[var2] < 10),
        'hello', 
        'zello'
    )
    return df

# 调用函数测试
result_df = my_fun('var1', 'var2', 'var3', 'new_col')
print(result_df)

运行后输出结果:

var1  var2  var3 new_col
0   true    10  eggs   zello
1  false    20  milk   zello
2   ture    50  eggs   zello

额外提个小细节:你的原始数据里var1有个拼写错误ture(正确是true),如果需要匹配这个错误拼写的值,可以把条件改成df[var1].isin(['true', 'ture']),这样两种拼写都能被识别到,比如:

df[var4] = np.where(
    (df[var1].isin(['true', 'ture'])) & (df[var3] == 'eggs') & (df[var2] < 10),
    'hello', 
    'zello'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:40:31