Jak posortować Pandas DataFrame według indeksu?

91

Gdy istnieje DataFrame, jak poniżej:

import pandas as pd
df = pd.DataFrame([1, 1, 1, 1, 1], index=[100, 29, 234, 1, 150], columns=['A'])

Jak mogę posortować tę ramkę danych według indeksu z nienaruszoną każdą kombinacją indeksu i wartości kolumny?

midtownguru
źródło

Odpowiedzi:

149

Ramki danych mają sort_indexmetodę, która domyślnie zwraca kopię. Przejdź inplace=Truedo działania w miejscu.

import pandas as pd
df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])
df.sort_index(inplace=True)
print(df.to_string())

Daje mi:

     A
1    4
29   2
100  1
150  5
234  3
Paul H.
źródło
13

Nieco bardziej kompaktowy:

df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])
df = df.sort_index()
print(df)

Uwaga:

fantabolous
źródło
9
.sort()docstring mówiDEPRECATED: use DataFrame.sort_values()
endolith
1
@endolith Indeed .sort()został od tego czasu przestarzały. Zastąpienie byłoby takie, jakiego .sort_index()używa Paul H. w swojej odpowiedzi, w takim przypadku jedyną różnicą między naszymi odpowiedziami jest to, że nie używam inplace=True.
fantabolous