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 eine None
für die Ausgabe bekomme.
a.sort()
änderta
und gibt nichts zurück, also ersetzen durch:a.sort(); print a
Antworten:
sorted
Geben Sie 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]
quelle
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 Anruf bei
print a
erneut anrufensort
.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]
quelle
Sie können auch drop_duplicates () anstelle von unique () verwenden.
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]}) a = df['A'].drop_duplicates() a.sort() print a
quelle
drop_duplicates()
3 mal als einzigartig schneller zu sein () auf einem Datenrahmen von 14.107.693 Zeilen [Pandas 0,18]Ich bevorzuge den Oneliner:
print(sorted(df['Column Name'].unique()))
quelle
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
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()
quelle
pandas
Lösung, weil sieNaN
Werte am Ende setzt und mit Arrays gemischter Typen funktioniert.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.
quelle
Eine andere Möglichkeit ist die Verwendung des festgelegten Datentyps.
Einige Merkmale von Sets : Mengen sind ungeordnet, können gemischte Datentypen enthalten, Elemente in einer Menge können nicht wiederholt werden, 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 im Listentyp :
[1, 2, 3, 6, 8]
quelle