Na przykład, chcę zmienić wszystkie wartości w kolumnie "ModelPrediction" na 1, gdzie kolumna "Agegrp" jest równa [0, 5], a gdzie kolumna "płciowa" jest równa mężczyzny, a kolumna "pclass" jest równy "1", a także "2".

Zmieniłem typ danych i kolumny PClass do obiektu.

table

Moja próba jest poniżej:

train.loc[train['Sex'] == 'male' & ['Pclass'] == 1 & ['Pclass'] == 2 & ['AgeGrp'] == (0, 5], 'ModelPrediction'] = 1  

Jestem bardzo nowy dla wszystkich rzeczy python / pandina, jakakolwiek pomoc jest doceniana !! Dziękuję Ci!

1
SKhan6 24 luty 2019, 16:26

2 odpowiedzi

Najlepsza odpowiedź

Jesteś dość blisko, ale jeden z twoich warunków, że Pclass jest zarówno 1, jak i 2, jest niemożliwe, składnia dla interwałów nie istnieje, a będziesz chciał, aby nawiasy oddzielili każdego z warunków:

train.loc[(train['Sex'] == 'male') & ((train['Pclass'] == 1) | (train['Pclass'] == 2)) & (train['AgeGrp'] > 0) & (train['AgeGrp'] <= 5), 'ModelPrediction'] = 1
1
fuglede 24 luty 2019, 13:36

Myślę, że potrzebujesz dodania () i { {X1}}, również jest dwa warunek z Pclass, myślę, że potrzebuję { { }} X3 tutaj, jeśli trzeba sprawdzić obie wartości :

train = pd.DataFrame({'Sex':['male','female','male'],
                      'Pclass':[1,0,1],
                      'AgeGrp':[pd.Interval(0, 5, closed='right'),
                                pd.Interval(6, 10, closed='right'),
                                pd.Interval(0, 5, closed='right')],
                        'ModelPrediction':[0,1,0]})
print (train)
      Sex  Pclass   AgeGrp  ModelPrediction
0    male       1   (0, 5]                0
1  female       0  (6, 10]                1
2    male       1   (0, 5]                0

train.loc[(train['Sex'] == 'male') & 
          (train['Pclass'].isin([1, 2])) & 
          (train['AgeGrp'] == pd.Interval(0, 5, closed='right')), 'ModelPrediction'] = 1  

print (train)
      Sex  Pclass   AgeGrp  ModelPrediction
0    male       1   (0, 5]                1
1  female       0  (6, 10]                1
2    male       1   (0, 5]                1
1
jezrael 24 luty 2019, 13:41