English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pandas的排序方式有两种:
按 标签 按实际值
我们看一个下面的示例。
import pandas as pd import numpy as np unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu mns=['col2','col1']) print(unsorted_df)
Résultat de l'exécution :
col2 col1 1 -2.063177 0.537527 4 0.142932 -0.684884 6 0.012667 -0.389340 2 -0.548797 1.848743 3 -1.044160 0.837381 5 0.385605 1.300185 9 1.031425 -1.002967 8 -0.407374 -0.435142 0 2.237453 -1.067139 7 -1.445831 -1.701035
在unsorted_df中,标签和值未排序。让我们看看如何对它们进行排序。
使用sort_index()方法,通过传递轴参数和排序顺序,可以对DataFrame进行排序。默认情况下,按升序对行标签进行排序。
import pandas as pd import numpy as np unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu mns = ['col2','col1']) sorted_df=unsorted_df.sort_index() print(sorted_df)
Résultat de l'exécution :
col2 col1 9 0.825697 0.374463 8 -1.699509 0.510373 7 -0.581378 0.622958 6 -0.202951 0.954300 5 -1.289321 -1.551250 4 1.302561 0.851385 3 -0.157915 -0.388659 2 -1.222295 0.166609 1 0.584890 -0.291048 0 0.668444 -0.061294
通过将布尔值传递给升序参数,可以控制排序的顺序。让我们考虑以下示例以了解相同的情况。
import pandas as pd import numpy as np unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu mns = ['col2','col1']) sorted_df = unsorted_df.sort_index(ascending=False) print(sorted_df)
Résultat de l'exécution :
col2 col1 9 0.825697 0.374463 8 -1.699509 0.510373 7 -0.581378 0.622958 6 -0.202951 0.954300 5 -1.289321 -1.551250 4 1.302561 0.851385 3 -0.157915 -0.388659 2 -1.222295 0.166609 1 0.584890 -0.291048 0 0.668444 -0.061294
通过将轴参数传递给值0或1,可以在列标签上进行排序。默认情况下,axis = 0 按行排序。让我们考虑以下示例以了解相同的情况。
import pandas as pd import numpy as np unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu mns = ['col2','col1']) sorted_df=unsorted_df.sort_index(axis=1) print(sorted_df)
Résultat de l'exécution :
col1 col2 1 -0.291048 0.584890 4 0.851385 1.302561 6 0.954300 -0.202951 2 0.166609 -1.222295 3 -0.388659 -0.157915 5 -1.551250 -1.289321 9 0.374463 0.825697 8 0.510373 -1.699509 0 -0.061294 0.668444 7 0.622958 -0.581378
Similar à l'ordonnancement par index, sort_values() est une méthode de tri par valeurs. Elle accepte un paramètre 'by', qui utilise le nom de la colonne du DataFrame pour trier les valeurs.
import pandas as pd import numpy as np unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]) sorted_df = unsorted_df.sort_values(by='col1') print(sorted_df)
Résultat de l'exécution :
col1 col2 1 1 3 2 1 2 3 1 4 0 2 1
Attention, col1Les valeurs sont triées et les col2Les valeurs et les indices de ligne seront avec col1modifiés ensemble. Par conséquent, ils ne semblent pas catégorisés.
'by' Les paramètres utilisent une liste de valeurs de colonnes.
import pandas as pd import numpy as np unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]) sorted_df = unsorted_df.sort_values(by=['col1','col2']) print(sorted_df)
Résultat de l'exécution :
col1 col2 2 1 2 1 1 3 3 1 4 0 2 1
sort_values() Fournit une spécification de l'algorithme à choisir parmi mergesort, heapsort et quicksort. Mergesort est l'unique algorithme stable.
import pandas as pd import numpy as np unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]) sorted_df = unsorted_df.sort_values(by='col1','kind='mergesort') print(sorted_df)
Résultat de l'exécution :
col1 col2 1 1 3 2 1 2 3 1 4 0 2 1