Здесь есть две проблемы, во-первых, вы изменили аргументы в .replace(<replace_this>, <with_this>)
.Во-вторых, вы используете опцию inplace=True
.Это изменяет экземпляр train_dataset
вместо возврата значения.
Теперь, когда вы знаете, что при использовании inplace=True
значение не возвращается, вы поймете, что sex
должно быть равно None
,потому что ничего не возвращается:
>>> import pandas as pd
>>> df = pd.DataFrame({'a': ['male', 'female', 'female', 'male']})
>>> df
a
# 0 male
# 1 female
# 2 female
# 3 male
Без replace=True
:
Теперь, когда мы заменим значения, мы получим
>>> df.replace(['female', 'male'], [0,1])
# a
# 0 1
# 1 0
# 2 0
# 3 1
Но df
сам по себевыглядит все так же, как и раньше:
>>> df
a
# 0 male
# 1 female
# 2 female
# 3 male
Таким образом, чтобы заменить значение в df
, мы должны сделать:
>>> df['a'] = df['a'].replace(['male', 'female'], [0,1])
>>> df
# a
# 0 0
# 1 1
# 2 1
# 3 0
На replace=True
:
Когда вы запустите это вместо: df.replace(['female', 'male'], [0, 1], inplace=True))
, вы сразу получите управляемую версию df
:
>>> df.replace(['female', 'male'], [0, 1], inplace=True)
>>> df
# a
# 0 0
# 1 1
# 2 1
# 3 0
Обратите внимание, что аргумент inplace=True
означает, что значение не возвращается:
>>> test = df.replace(['female', 'male'], [0, 1], inplace=True)
>>> type(test)
# <class 'NoneType'>