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.

TypeError: tipo no-hashable: ‘list’ en pandas con Groupby o PivotTable

En primer lugar, quiero especificar que mi pregunta es muy similar a otras preguntas realizadas anteriormente, pero probé sus respuestas y nada funcionó para mí.

Estoy tratando de agregar información utilizando más de una variable para agrupar. Puedo usar una tabla dinámica o groupby, ambos son válidos para esto, pero siempre obtengo el mismo error.

Mi código es:

import numpy as np
vars_agrup = ['num_vars', 'list_vars', 'Modelo']
metricas = ["MAE", "MAE_perc", "MSE", "R2"]
g = pd.pivot_table(df, index=vars_agrup,  aggfunc=np.sum, values=metricas)

o

df.groupby(vars_agrup, as_index=False).agg(Count=('MAE','sum'))

También intenté usar () en lugar de [] para evitar convertirlo en una lista, pero luego el programa busca una columna llamada “‘num_vars’, ‘list_vars’, ‘Modelo'” que no existe. Intenté ([]) y [()]. Índice en lugar de columnas. Siempre es lo mismo: para una variable para agrupar está bien, para varias obtengo el error: TypeError: unhashable type: 'list'

Seguramente, todas estas variables son columnas en df.

Editar: Mi df se ve así:
https://i.stack.imgur.com/4Jegr.png

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando agrupar por varias variables, pero estás obteniendo un error relacionado con el tipo de dato. Es posible que el tipo de dato de las variables por las que estás intentando agrupar no sea “hashable”. Para comprobar el tipo de dato de tus variables, puedes usar el método .dtypes.

    Si el tipo de dato no es “hashable”, puedes intentar convertirlo a un tipo de dato “hashable”, como una cadena o un entero. Puedes hacerlo usando el método .astype().

    Por ejemplo, si estás intentando agrupar por una columna llamada Modelo, puedes intentar lo siguiente:

    df['Modelo'] = df['Modelo'].astype(str)
    

    Una vez que hayas convertido el tipo de dato a un tipo “hashable”, puedes intentar ejecutar tu código de nuevo.

    Si sigues teniendo problemas, por favor proporciona una muestra de tus datos para que podamos entender mejor el problema.

Comments are closed.