我正在用泰坦尼克号DataFrame学习熊猫。
(请参见https://www.kaggle.com/c/titanic/data)
出于培训目的,我想检查一下是否有不包含先生的男性姓名或不包含夫人的女性姓名。
为此,我想创建一个名为“ nameOK”的布尔列,其中True表示满足条件,而False则表示不满足条件。
代码很简单:
# condition for male names
condition_male_1 = titanicDF['Name'].str.contains('Mr.')
condition_male_2 = titanicDF['Sex']=="male"
condition_male = condition_male_1 & condition_male_2
condition_female_1 = titanicDF['Name'].str.contains('Mrs.')
condition_female_2 = titanicDF['Sex']=="female"
condition_female = condition_female_1 & condition_female_2
# generate column with check result
titanicDF['nameOK']=condition_male | condition_female
令我惊讶的是,以下内容不起作用:
titanicDF['nameOK']=condition_male or condition_female
也没有:
titanicDF['nameOK']=(condition_male) or (condition_female)
我的观点是,这完全与python的ZEN背道而驰,比如显式地更好地隐式,可读性等。
为什么熊猫(或python)只理解符号而不是真正的操作数“或”。 符号“&”和操作数“ and”也是如此。