Skip to main content
 首页 » 编程设计

python之Pandas 相当于 SQL case when 语句来创建新变量

2025年05月04日24cyq1162

我有这个 df:

data = np.array([[np.nan, 0], [2, 0], [np.nan, 1]]) 
df = pd.DataFrame(data=data, columns = ['a', 'b']) 

看起来像这样:

     a    b 
    -------- 
0   NaN  0.0 
1   2.0  0.0 
2   NaN  1.0 

我的目标是创建第三列“c”,当“a”列等于 NaN 且“b”列等于 0 时,该列的值为 1。“c”会否则为 0。简单的 SQL case 语句是:

(CASE WHEN a IS NULL AND b = 0 THEN 1 ELSE 0 END) AS C 

期望的输出是这样的:

     a    b   c 
    ----------- 
0   NaN  0.0  1 
1   2.0  0.0  0 
2   NaN  1.0  0 

我的(错误的)尝试:

df['c'] = np.where(df['a']==np.nan & df['b'] == 0, 1, 0) 

非常感谢。

请您参考如下方法:

要对条件进行更多控制,请使用 np.select。与 when 的情况非常相似,可用于放大多个输出。

df['c'] = np.select( 
[ 
    (df['a'].isnull() & (df['b'] == 0)) 
],  
[ 
    1 
],  
default=0 )