Ich habe einen Pandas-Datenrahmen. Ich möchte die eindeutigen Werte einer seiner Spalten in aufsteigender Reihenfolge drucken. So mache ich es:

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

Das Problem ist, dass ich ein None für die Ausgabe bekomme.

181
MAS 18 Aug. 2015 im 15:10

7 Antworten

Beste Antwort

sorted gibt eine neue sortierte Liste aus den Elementen in iterable zurück.

CODE

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

AUSGABE

[1, 2, 3, 6, 8]
82
Vineet Kumar Doshi 18 Aug. 2015 im 12:25

Kam heute selbst über die Frage. Ich denke, der Grund, warum Ihr Code 'None' zurückgibt (genau das, was ich mit derselben Methode erhalten habe), ist der folgende

a.sort()

Ruft die Sortierfunktion auf, um die Liste zu mutieren a. Nach meinem Verständnis ist dies ein Änderungsbefehl. Um das Ergebnis zu sehen, müssen Sie print (a) verwenden.

Meine Lösung, als ich versuchte, alles in Pandas zu halten:

pd.Series(df['A'].unique()).sort_values()
4
Bowen Liu 19 Okt. 2018 im 20:21

sort sortiert an Ort und Stelle, gibt also nichts zurück:

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)

Sie müssen also nach dem Aufruf von sort erneut print a aufrufen.

Z.B.:

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]
13
EdChum - Reinstate Monica 18 Aug. 2015 im 12:12

Eine andere Möglichkeit ist die Verwendung des Datentyps .

Einige Merkmale von Sets : Sets sind ungeordnet, können gemischte Datentypen enthalten, Elemente in einem Set können nicht wiederholt werden und sind veränderbar.

Lösen Sie Ihre Frage:

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

Die Antwort in Liste Typ:

[1, 2, 3, 6, 8]
0
Ivan Carrasco Quiroz 8 Dez. 2018 im 07:27

Sie können auch die drop_duplicates ( ) statt unique ()

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a
8
Meloun 18 Aug. 2015 im 12:24

Ich bevorzuge den Oneliner:

print(sorted(df['Column Name'].unique()))
6
MDMoore313 19 März 2018 im 16:37

Ich würde vorschlagen, numpys Sortierung zu verwenden, da es sowieso das ist, was Pandas im Hintergrund tun:

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

Aber alles in Pandas zu tun ist auch gültig.

4
Challensois 18 Aug. 2015 im 12:24