Encuentra los valores únicos en una columna y luego ordénalos

Tengo un dataframe de pandas. Quiero imprimir los valores únicos de una de sus columnas en orden ascendente. Así es como lo estoy haciendo:

import pandas as pd df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() print a.sort() 

El problema es que estoy obteniendo un None para la salida.

sorted devolver una nueva lista ordenada de los elementos en iterable.

CÓDIGO

 import pandas as pd df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() print sorted(a) 

SALIDA

 [1, 2, 3, 6, 8] 

sort ordena inplace así que no devuelve nada:

 In [54]: df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() a.sort() a Out[54]: array([1, 2, 3, 6, 8], dtype=int64) 

Así que tienes que llamar a print a vez más después de la llamada para sort .

P.ej.:

 In [55]: df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].unique() a.sort() print(a) [1 2 3 6 8] 

También puedes usar drop_duplicates () en lugar de unique ()

 df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].drop_duplicates() a.sort() print a 

Sugeriría usar la ordenación de numpy, ya que de todos modos es lo que hacen los pandas en el fondo:

 import numpy as np np.sort(df.A.unique()) 

Pero hacer todo en pandas también es válido.

Prefiero el oneliner:

 print(sorted(df['Column Name'].unique())) 

Encontré la pregunta hoy mismo. Creo que la razón por la que su código devuelve ‘Ninguno’ (exactamente lo que obtuve al usar el mismo método) es que

 a.sort() 

está llamando a la función de ordenación para mutar la lista a. En mi entendimiento, este es un comando de modificación. Para ver el resultado tienes que usar print (a).

Mi solución, ya que intenté mantener todo en pandas:

 pd.Series(df['A'].unique()).sort_values() 

Otra forma es utilizando el tipo de datos establecido .

Algunas características de los Conjuntos : Los conjuntos no están ordenados, pueden incluir tipos de datos mixtos, los elementos de un conjunto no se pueden repetir, son mutables.

Resolviendo tu pregunta:

 df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) sorted(set(df.A)) 

La respuesta en tipo de lista :

 [1, 2, 3, 6, 8]