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.

Convertir columna de listas a enteros.

Tratando de convertir después de codificar a enteros, pero son objetos, así que primero los convierto en cadenas.

traindf[“etiquetas”] = traindf[“etiquetas”].astype(str).astype(int)

Me aparece este error:

literal inválido para int() con base 10: ‘[0, 1, 0, 0]

Un ejemplo de una fila del conjunto de datos es:

texto                    etiquetas
[palabra1, palabra2, palabra3, palabra4] [1,0,1,0]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que la columna “labels” en el DataFrame “train_df” está en formato de lista, lo que no es compatible con el tipo de datos “int”. Por lo tanto, antes de convertir la columna “labels” en valores enteros, primero debes convertir los elementos de la lista a cadenas o enteros.

    Una forma de hacerlo es utilizar el método “apply” junto con funciones “lambda”. Por ejemplo, para convertir cada elemento en la columna “labels” en una cadena, puedes usar:

    train_df["labels"] = train_df["labels"].apply(lambda x: [str(y) for y in x])
    

    Y luego, puedes convertir la columna “labels” en valores enteros de la siguiente manera:

    train_df["labels"] = train_df["labels"].apply(lambda x: [int(y) for y in x])
    train_df["labels"] = train_df["labels"].apply(lambda x: int("".join(map(str, x))))
    

    Ten en cuenta que la última línea combina los elementos de la lista en un solo valor entero.

    Alternativamente, puedes utilizar el módulo “json” para codificar y descodificar la columna “labels” como un objeto JSON, lo que te permite convertir fácilmente los elementos de la lista en valores enteros:

    import json
    
    train_df["labels"] = train_df["labels"].apply(lambda x: json.dumps(x))
    train_df["labels"] = train_df["labels"].apply(lambda x: json.loads(x))
    train_df["labels"] = train_df["labels"].apply(lambda x: int("".join(map(str, x))))
    

    Este enfoque puede ser más escalable y flexible, especialmente si estás trabajando con conjuntos de datos más grandes o diferentes formatos de datos.

Comments are closed.