from category_encoders import TargetEncoder
encoder=TargetEncoder()
for i in df['gender']:
df['gender']=np.where(df[i]!='nan',encoder.fit_transform(data['gender'],data['target']),'nan')
{KeyError: 'Male'}
After a lot of Google search, I found out that there is already an in-built method. Try this:
from category_encoders import TargetEncoder
encoder = TargetEncoder(handle_missing = 'return_nan')
df['gender'] = encoder.fit_transform(df['gender'], df['target'])