【发布时间】:2020-01-06 15:14:25
【问题描述】:
我正在尝试根据数据框中其他列的多个条件填充列 ['Mod_unMod'] ('cnms_df')。我写了一些pseudo-code来解释困难:
IF (cnms_df['CA'] = "NO"):
IF (cnms_df['I'] ="X" OR cnms_df['I']="V" OR cnms_df['I']="VE" OR cnms_df['I']="0.2 PCT ANNUAL CHANCE FLOOD HAZARD" OR cnms_df['I']="AREA NOT INCLUDED")
cnms_df['Mod_unMod'] = "UnMapped"
ELSE IF (LEFT(cnms_df['STUDY_TYPE].str[:3])="NON")
cnms_df['Mod_unMod'] ="NON"
ELSE IF (cnms_df['BJ']="X" OR cnms_df['BJ']="V" OR cnms_df['BJ']="V" OR cnms_df['BJ']="VE" OR cnms_df['BJ']="0.2 PCT ANNUAL CHANCE FLOOD HAZARD" OR cnms_df['BJ']="AREA NOT INCLUDED")
cnms_df['Mod_unMod']
ELSE IF (LEFT(BK2,3)="NON"
cnms_df['Mod_unMod']="UnMod"
ELSE:
cnms_df['Mod_unMod']="Modernized")
ELSE:
cnms_df['Mod_unMod'] = "UnMapped"
我已经应用了简单的np.where 语句,但我不确定如何使用上述级别来做到这一点。有没有办法以合乎逻辑的方式做这样的事情?
cnms_df['Mod_unMod'] = np.where((cnms_df['CA'] == 'No') & ((cnms_df['I'] ="X") | (cnms_df['I']="V") | (cnms_df['I']="VE") | (cnms_df['I']="0.2 PCT ANNUAL CHANCE FLOOD HAZARD") | (cnms_df['I']="AREA NOT INCLUDED")), "UnMapped", "Modernized")
【问题讨论】:
-
您需要将逻辑重写为一组
if...elif...else,而不是嵌套,但它是np.select。见stackoverflow.com/questions/44991438/…
标签: python-3.x pandas if-statement conditional-statements