Olá, tudo bem?
Gostaria de saber como retornar um df sem ser binário, fazendo um get_dummies reverso, como seria isso?
Olá, tudo bem?
Gostaria de saber como retornar um df sem ser binário, fazendo um get_dummies reverso, como seria isso?
Oi, Matheus! Tudo bem com você?
Tem uma solução possível para fazer o get_dummies reverso, mas ela tem algumas limitações. A primeira é que em caso de utilizar o parâmetro drop_first=True
não é possível encontrar a partir do dataframe dummyzado qual a primeira variável que foi removida, então o dataframe reverso será apenas baseado nas categorias que existem.
A outra limitação, é que, em caso de um dataframe com valores NaN
e não declarado o parâmetro dummy_na=True
, que irá criar um coluna com valores NaN
, não será possível também recuperar os valores NaN
que existam nos dados originais.
Sabendo disso, vamos à solução. Tendo um dataframe df
dado por:
0 | |
---|---|
0 | a |
1 | b |
2 | a |
3 | c |
4 | c |
5 | b |
Foi feito o tratamento de categorização dos dados com get_dummies
:
df_dummy = pd.get_dummies(df)
df_dummy
a | b | c | |
---|---|---|---|
0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 |
2 | 1 | 0 | 0 |
3 | 0 | 0 | 1 |
4 | 0 | 0 | 1 |
5 | 0 | 1 | 0 |
O dataframe reverso df_reverso
com o método idxmax
especificando o parâmetro axis=1
da seguinte forma:
df_reverso = df_dummy.idxmax(axis=1)
df_reverso
O resultado que obtemos é idêntico ao dataframe original (df
):
0 | |
---|---|
0 | a |
1 | b |
2 | a |
3 | c |
4 | c |
5 | b |
Espero ter te ajudado. Bons estudos!
Não estou conseguindo, retorna este erro: "reduction operation 'argmax' not allowed for this dtype". Não sei qual dtype usar.
Obrigado!
Oi, Matheus!
Você pode me enviar o print do seu código? Ou mesmo o seu código, por favor.
Consegui resolver, muito obrigado!!