es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Aplicar pd.get_dummies() a las columnas de tipo string de un dataframe pandas?

Tengo el siguiente dataframe:

df = pd.DataFrame({'a': [6.6, -5.2, 2.1, 3.3, 1.1],
              'b': ['a', 'a', 'c', 'b', 'a'],
              'c': ['kfr', 'kfr', 'lu', 'ku', 'lu'],
              'd': ['t', 's', 's', 't', 'a']})

Todos los dtype (columnas b, c, d) son de tipo string.

Si llamo a df = df.convert_dtypes(), y luego llamo a pd.get_dummies(), no sucede nada.

Pero cuando lo llamo solo en una columna del dataframe, funciona.

¿Por qué está sucediendo esto? ¿Es un error?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No, no es un error. La función convert_dtypes() solo convierte el tipo de dato de las columnas con valores de cadena específicos a su correspondiente dtype (por ejemplo, 'int64', 'float64', etc.). No cambia ninguno de los valores reales en las columnas.

    Por lo tanto, llamar a pd.get_dummies() en todo el DataFrame después de llamar a df.convert_dtypes() no dará como resultado ninguna columna codificada en dummy nueva porque los valores en las columnas b, c y d no han sido actualizados.

    Para obtener columnas codificadas en dummy para todas las columnas categóricas de un DataFrame, podrías usar la función pd.get_dummies() solo en las columnas categóricas del DataFrame, de esta manera:

    categorical_cols = df.select_dtypes(include=['object']).columns
    dummies = pd.get_dummies(df[categorical_cols], prefix=categorical_cols)
    df = pd.concat([df, dummies], axis=1).drop(categorical_cols, axis=1)
    

    Esto creará nuevas columnas codificadas en dummy para todas las columnas categóricas de df.

Comments are closed.