Sortowanie dataframe

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