使用两个参数创建一个pandas映射

时间:2017-07-04 12:19:50

标签: pandas numpy

我正在使用“titanic.csv”https://www.kaggle.com/c/titanic/data,试图从年龄栏中找到青少年的存活率。我能够用

创建一个'under10'系列
under10 = (titanic['Age'] < 10).map({True:'under 10', False:'over 10'})
under10_survived_1 = titanic.groupby(under10)['Survived'].mean()

但是当我尝试对青少年范围做同样的事情时,给出了错误。

teenager = (titanic['Age'] < 20 and titanic['Age'] > 10).map({True:'Teenager', False:'Not Teenager'})
teenager = (titanic['Age'] < 20 & titanic['Age'] > 10).map({True:'Teenager', False:'Not Teenager'})

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

为每个条件添加双(),因为运算符优先级:

teenager = ((titanic['Age'] < 20) & (titanic['Age'] > 10))
                        .map({True:'Teenager', False:'Not Teenager'})

替代解决方案:

teenager = np.where((titanic['Age'] < 20) & (titanic['Age'] > 10)),'Teenager','Not Teenager')