Python 中的双重 IIF 语句

Double IIF Statement in Python

我有一个 SQL 代码,其中有一个双 IIF 语句,也就是说,if true 部分是另一个 IIF 语句,我试图在 python 中使用 np.where

SQL代码是:

IIF ([STATE] Is Null, IIF ([COUNTRY] Is Null,'No Country',[COUNTRY]), [STATE])

我试过这个:

DF['NewCol'] = np.where(DF['STATE'].isnull(),(np.where(DF['COUNTRY'].isnull(),'No Country','DF['COUNTRY']'),DF['STATE']))

感谢任何帮助

我认为你需要:

DF['NewCol'] = np.where(DF['STATE'].isnull(),
               np.where(DF['COUNTRY'].isnull(),'No Country', DF['COUNTRY']),DF['STATE'])

样本:

DF = pd.DataFrame({'STATE':[np.nan,'a','b',np.nan],
                   'COUNTRY':[np.nan,'c',np.nan, 'd']})

print (DF)
  COUNTRY STATE
0     NaN   NaN
1       c     a
2     NaN     b
3       d   NaN

DF['NewCol'] = np.where(DF['STATE'].isnull(),
               np.where(DF['COUNTRY'].isnull(),'No Country', DF['COUNTRY']),DF['STATE'])

print (DF)
  COUNTRY STATE      NewCol
0     NaN   NaN  No Country
1       c     a           a
2     NaN     b           b
3       d   NaN           d

如果需要先在COUNTRY列输出列值:

DF['NewCol'] = np.where(DF['COUNTRY'].isnull(),
               np.where(DF['STATE'].isnull(),'No Country', DF['STATE']),DF['COUNTRY'])

print (DF)
  COUNTRY STATE      NewCol
0     NaN   NaN  No Country
1       c     a           c
2     NaN     b           b
3       d   NaN           d