Python: necesito ayuda con un error de clasificación en Pandas

CorePress2024-01-25  11

Tengo un marco de datos que se ve así:

Pandas DF:

Lo exporté a Excel para poder verlo más fácilmente. Pero básicamente estoy tratando de ordenarlo por SeqNo asc y no cuenta correctamente. Entonces, en lugar de ir 0,0,0,0,1,1,1,1,2,2,2,2 va 0,0,0,0,0,1,1,1,1,10,10 ,10,10. Por favor ayuda si es posible. Aquí está el código que tengo para ordenarlo. He probado muchos otros métodos pero no se clasifican correctamente.

 final_df = df.sort_values(by=['SeqNo'])


------------------------------------

Según su descripción, creo que se tratan los valores de las columnas como "Cadena" en lugar de "int". Puedes confirmar esto marcando tEl tipo de datos de su columna (Ejemplo: use df.info() para verificar el tipo de datos de todas las columnas en el marco de datos)

Una opción para resolver esto es convertir ese tipo de columna en particular de cadena a columna "int" antes de ordenar y exportar a Excel. Puedes aplicar pandas "to_numeric()" funcionar antes de ordenar y exportar a Excel. Consulte la documentación de pandas para to_numeric() (consulte https://www.linkedin.com/pulse/change-data-type-columns-pandas-mohit-sharma/ para ver un ejemplo)

1

Gracias por confirmar. Si mi anLa respuesta resolvió su problema, por favor vote/acepte mi respuesta

-Venkat

28 de marzo de 2021 a las 6:05



------------------------------------

En primer lugar, intente el comando que se proporciona a continuación para verificar el tipo de datos que se le proporcionan porque primero es importante comprender sus datos:-

imprimir(df.dtypes)

El comando anterior mostrará todos los tipos de datos de los datos dados. Luego intente encontrar el tipo de datos SeqNo. Si su salida para SeqNo muestra algo como:-

SeqNo    object
dtype: object

Entonces sus datos tienen formato de cadena y debe convertirlos a formato entero o numérico. Entonces, para convertirlo hay dos formas:-

1. Por método astype(int)

df['NºSeq'] = df['NºSeq'].astype(int)

2. Por método to_numeric

df['SeqNo'] = pd.to_numeric(df['SeqNo'])

Después de este paso, intente nuevamente verificar que el tipo de datos se haya cambiado o no escribiendo print(df.dtypes) y ahora mostrará un resultado similar al que se indica a continuación:-

SeqNo    int32
dtype: object

Ahora puede imprimir datos después de la operación de clasificación en formato ascendente:-

final_df = df.sort_values(by = ['SeqNo'], ascendente = Verdadero)

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare