Когда вы проверяете if titanic['Sex']=='male'
, вы сравниваете male
со всей серией, поэтому вы получаете ValueError
.
Если вы действительно хотите продолжить итеративный подход, вы можете использовать iterrows
и проверить свое состояние для каждой строки.Тем не менее, вам следует избегать итераций с Pandas, и здесь есть более чистое решение.
Настройка
df = pd.DataFrame({'sex': ['male', 'female', 'male', 'male', 'female']})
Просто используйте np.where
здесь:
np.where(df.sex == 'male', 1, 0)
# array([1, 0, 1, 1, 0])
Вы также можете использовать логическое индексирование:
(df.sex == 'male').astype(int).values.tolist()
# [1, 0, 1, 1, 0]