Zoek de unieke waarden in een kolom en sorteer ze

Ik heb een panda-dataframe. Ik wil de unieke waarden van een van de kolommen in oplopende volgorde afdrukken. Dit is hoe ik het doe:

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

Het probleem is dat ik een Nonekrijg voor de uitvoer.


Antwoord 1, autoriteit 100%

sorted(iterable): Retourneer een nieuwe gesorteerde lijst van de items in iterable.

CODE

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

UITVOER

[1, 2, 3, 6, 8]

Antwoord 2, autoriteit 13%

sortsorteert op zijn plaats, dus retourneert niets:

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)

Je moet dus opnieuw print aaanroepen na de aanroep om sort.

Bijvoorbeeld:

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]

Antwoord 3, autoriteit 8%

U kunt ook de drop_duplicates()in plaats van unique()

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

Antwoord 4, autoriteit 7%

Ik kwam de vraag vandaag zelf tegen. Ik denk dat de reden dat je code ‘Geen’ retourneert (precies wat ik heb gekregen door dezelfde methode te gebruiken) is dat

a.sort()

roept de sorteerfunctie aan om de lijst a te muteren. Naar mijn mening is dit een wijzigingsopdracht. Om het resultaat te zien moet je print(a) gebruiken.

Mijn oplossing, aangezien ik alles in panda’s probeerde te houden:

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

Antwoord 5, autoriteit 6%

Ik geef de voorkeur aan de oneliner:

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

Antwoord 6, autoriteit 3%

Ik zou willen voorstellen om numpy’s sort te gebruiken, want het is hoe dan ook wat panda’s op de achtergrond doen:

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

Maar alles doen in panda’s is ook geldig.


Antwoord 7

Een andere manier is het gebruik van setgegevenstype.

Enkele kenmerken van Sets:Sets zijn ongeordend, kunnen gemengde gegevenstypen bevatten, elementen in een set kunnen niet worden herhaald, zijn veranderlijk.

Uw vraag oplossen:

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

Het antwoord in Lijst Type:

[1, 2, 3, 6, 8]

Other episodes