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?

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

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:


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.