Boas Vitor! Tudo bem? Espero que sim!
Existem diversas formas de fazzer isso, vou lhe apresentar aquela que entendo como a mais eficiente.
Usaremos um dicionário e a função map() para fazer as transformações que você solicitou.
Considerando o DataFrame:
df = pd.DataFrame(
[
{'Filhos':1, 'Sexo': 'M', 'Estado Civil': 'Casado'},
{'Filhos':2, 'Sexo': 'F', 'Estado Civil': 'Casado'},
{'Filhos':5, 'Sexo': 'F', 'Estado Civil': 'Casado'},
{'Filhos':0, 'Sexo': 'F', 'Estado Civil': 'Casado'},
{'Filhos':6, 'Sexo': 'M', 'Estado Civil': 'Casado'},
{'Filhos':3, 'Sexo': 'M', 'Estado Civil': 'Casado'},
]
)
ou, visualmente:
Filhos Sexo Estado Civil
0 1 M Casado
1 2 F Casado
2 5 F Casado
3 0 F Casado
4 6 M Casado
5 3 M Casado
Primeiro, vamos montar um dicionário onde as chaves são os valores que temos no DataFrame, e os valores o que desejamos que seja inserido. No seu caso seria:
sexo = {'M': 0, 'F': 1}
Então, vamos usar a função map() para substituir o conteúdo da coluna Sexo de acordo com o dicionário:
df['Sexo'] = df['Sexo'].map(sexo)
Resultando em:
Filhos Sexo Estado Civil
0 1 0 Casado
1 2 1 Casado
2 5 1 Casado
3 0 1 Casado
4 6 0 Casado
5 3 0 Casado
A função map() troca os valores da coluna selecionada (no caso Sexo) de acordo com o dicionário passado como parâmetro.
Aliás, se consultarmos o tipo de df['Sexo'], ele é um float64, como você tinha solicitado.
O mesmo pode ser feito com estado civil.
Espero ter ajudado!
Bons estudos!