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
我有一个 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