2016-10-11 2 views
1

Ich habe folgenden Datenrahmen:Sortieren von Daten innerhalb der Gruppe - Pandas Datenrahmen

 As Comb  Mu(+) Name  Zone  f´c 
33 0.37 2 6.408225 Beam_13 Final 30.0 
29 0.37 2 6.408225 Beam_13 Begin 30.0 
31 0.94 2 16.408225 Beam_13 Middle 30.0 
15 0.54 2 9.504839 Beam_7 Final 30.0 
11 0.54 2 9.504839 Beam_7 Begin 30.0 
13 1.12 2 19.504839 Beam_7 Middle 30.0 

ich die Daten von Name und dann durch Zone innerhalb einer Gruppe sortieren, muß, wie unten in dem erwarteten Ausgang gezeigt:

 As Comb  Mu(+) Name  Zone  f´c 
11 0.54 2 9.504839 Beam_7 Begin 30.0 
13 1.12 2 19.504839 Beam_7 Middle 30.0 
15 0.54 2 9.504839 Beam_7 Final 30.0 
29 0.37 2 6.408225 Beam_13 Begin 30.0 
31 0.94 2 16.408225 Beam_13 Middle 30.0 
33 0.37 2 6.408225 Beam_13 Final 30.0 

Ich kann nach Index, aber nicht nach Name und Zone innerhalb der Name Gruppe bestellen. Irgendwelche Ideen?

Antwort

3

Am saubersten ist es, die Spalten Name und Zone in den Kategorietyp zu konvertieren, indem Sie die Kategorien und die Reihenfolge angeben.

from io import StringIO 

data = """ 
As,Comb,Mu(+),Name,Zone,f´c 
33,0.37,2,6.408225,Beam_13,Final,30.0 
29,0.37,2,6.408225,Beam_13,Begin,30.0 
31,0.94,2,16.408225,Beam_13,Middle,30.0 
15,0.54,2,9.504839,Beam_7,Final,30.0 
11,0.54,2,9.504839,Beam_7,Begin,30.0 
13,1.12,2,19.504839,Beam_7,Middle,30.0 
""" 

df = pd.read_csv(StringIO(data)) 

# convert Name and Zone to ordinal/category type 
df.Name = df.Name.astype('category', categories=["Beam_7", "Beam_13"], ordered=True) 
df.Zone = df.Zone.astype('category', categories=["Begin", "Middle", "Final"], ordered=True) 

df.sort_values(by=['Name', 'Zone']) 

Hier ist die Ausgabe:

enter image description here

Weitere Optionen können here

+0

Dank bestellt werden! Großartig! – Eduardo

+0

Eine andere Frage: Es ist möglich, eine Pandas-Spalte als Kategorie zu setzen? Ich habe die Liste von "Beam" auf diese Weise. – Eduardo

+0

Ich bin mir nicht sicher, was du meinst. Die obige Methode konvertiert die Spalten in einen Kategorietyp. Vielleicht überlegen Sie, eine andere Frage zu stellen. Schau dir auch die Pandas Docs [hier] an (http://pandas.pydata.org/pandas-docs/stable/categorical.html) – shawnheide

Verwandte Themen