2015-05-03 12 views
21

Mam ramki danych, który wygląda tak:Jak uporządkować indeksowanych wiersze na podstawie listy w Pandy ramki danych

company Amazon Apple Yahoo 
name 
A    0 130  0 
C   173  0  0 
Z    0  0 150 

Powstał przy użyciu tego kodu:

import pandas as pd 
df = pd.DataFrame({'name' : ['A', 'Z','C'], 
        'company' : ['Apple', 'Yahoo','Amazon'], 
        'height' : [130, 150,173]}) 

df = df.pivot(index="name", columns="company", values="height").fillna(0) 

co chcę należy posortować wiersz (z indeksem name) zgodnie z wstępnie zdefiniowaną listą ["Z", "C", "A"]. W wyniku tego:

company Amazon Apple Yahoo 
name 
Z    0  0 150 
C   173  0  0 
A    0 130  0 

Jak mogę to osiągnąć?

Odpowiedz

31

Można ustawić wskaźnik na predefiniowanym kolejności używając reindex jak

In [14]: df.reindex(["Z", "C", "A"]) 
Out[14]: 
company Amazon Apple Yahoo 
Z    0  0 150 
C   173  0  0 
A    0 130  0 

Jednakże, jeśli jest to w porządku alfabetycznym, można użyć sort_index(ascending=False)

In [12]: df.sort_index(ascending=False) 
Out[12]: 
company Amazon Apple Yahoo 
name 
Z    0  0 150 
C   173  0  0 
A    0 130  0 

Jak wskazano poniżej, trzeba przypisać go do niektórych zmienna

In [13]: df = df.sort_index(ascending=False) 
+8

Pamiętaj, że to nie modyfikuje arra y, musisz to przypisać do czegoś. – endolith

Powiązane problemy