Jednym z najprostszych sposobów jest użycie metody sort_values()
. Można nią posortować wiersze dataframe’u według wartości w określonej kolumnie lub według kilku kolumn jednocześnie. Można też ustalić, czy ma być to sortowanie rosnące lub malejące.
Przykład:
import pandas as pd
# Tworzenie prostego dataframe'u
df = pd.DataFrame({'col1': [3, 2, 1], 'col2': [6, 5, 4], 'col3': [9, 8, 7]})
col1 col2 col3
0 3 6 9
1 2 5 8
2 1 4 7
# Sortowanie wierszy według wartości w kolumnie 'col1', rosnąco
df1 = df.sort_values('col1')
print(df1)
col1 col2 col3
2 1 4 7
1 2 5 8
0 3 6 9
# Sortowanie wierszy według wartości w kolumnie 'col2', malejąco
df2 = df.sort_values('col2', ascending=False)
print(df2)
col1 col2 col3
0 3 6 9
1 2 5 8
2 1 4 7
# Sortowanie wierszy według wartości w kolumnach 'col2' i 'col3', rosnąco
df3 = df.sort_values(['col2', 'col3'])
print(df3)
col1 col2 col3
2 1 4 7
1 2 5 8
0 3 6 9
Można użyć metody sort_index()
, aby posortować wiersze według indeksu. Może to być sortowanie rosnące lub malejące.
Przykład:
import pandas as pd
# Tworzenie prostego dataframe'u
df = pd.DataFrame({'col1': [3, 2, 1], 'col2': [6, 5, 4], 'col3': [9, 8, 7]})
col1 col2 col3
0 3 6 9
1 2 5 8
2 1 4 7
# Sortowanie wierszy według indeksu, rosnąco
df1 = df.sort_index()
print(df1)
col1 col2 col3
0 3 6 9
1 2 5 8
2 1 4 7
# Sortowanie wierszy według indeksu, malejąco
df2 = df.sort_index(ascending=False)
print(df2)
col1 col2 col3
2 1 4 7
1 2 5 8
0 3 6 9
Innym sposobem sortowania jest użycie metody sort_index()
dla wybranej osi (domyślnie 0, czyli wiersze). Można też ustalić, czy ma być to sortowanie według wartości indeksu, czy według etykiet.
Przykład:
import pandas as pd
# Tworzenie dataframe'u z wybranym indeksem i etykietami kolumn
df = pd.DataFrame({'col1': [3, 2, 1], 'col2': [6, 5, 4], 'col3': [9, 8, 7]}, index=['a', 'c', 'b'])
print(df)
col1 col2 col3
a 3 6 9
c 2 5 8
b 1 4 7
# Sortowanie wierszy według indeksu, rosnąco
df1 = df.sort_index()
print(df1)
col1 col2 col3
a 3 6 9
b 1 4 7
c 2 5 8
# Sortowanie kolumn według etykiet, malejąco
df2 = df.sort_index(axis=1, ascending=False)
print(df2)
col3 col2 col1
a 9 6 3
c 8 5 2
b 7 4 1