2017-07-04 3 views
1

Ich arbeite mit der "titanic.csv" https://www.kaggle.com/c/titanic/data, versuchen, die Teenager-Überlebensrate aus der Altersspalte zu finden. Ich konnte eine ‚under10‘ Serie mitErstellen Sie eine Pandas-Karte mit zwei Argumenten

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

erstellen Aber wenn ich versuche, das gleiche mit Jugendlichem Bereich zu tun, wurde Fehler gegeben.

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(). 

Irgendwelche Vorschläge zur Behebung dieses Problems?

Antwort

1

Doppel () für jede Bedingung, hinzufügen, weil Operatorpräzedenz:

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

Alternative Lösung:

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