English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ci sono due modi di ordinare in Pandas:
Per etichetta Per valore reale
Consideriamo un esempio seguente.
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)
结果运行:
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
In unsorted_df, le etichette e i valori non sono ordinati. Vediamo come possiamo ordinare.
Utilizzando il metodo sort_index(), tramite la trasmissione del parametro asse e dell'ordine di sortimento, e' possibile ordinare un DataFrame. Di default, l'ordine di sortimento e' crescente per le etichette delle righe.
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)
结果运行:
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
Tramitando un valore booleano come parametro in ordine crescente, e' possibile controllare l'ordine di sortimento. Consideriamo l'esempio seguente per comprendere la situazione.
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)
结果运行:
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
Tramite la trasmissione del parametro dell'asse 0 o 1, è possibile ordinare sulle etichette delle colonne. Di default, axis = 0 ordina per riga. Consideriamo l'esempio seguente per comprendere la stessa situazione.
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)
结果运行:
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
Simile alla ordinazione dell'indice, sort_values() è un metodo di ordinamento per valore. Accetta un parametro 'by', che utilizza il nome della colonna del DataFrame per ordinare i valori.
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)
结果运行:
col1 col2 1 1 3 2 1 2 3 1 4 0 2 1
注意,col1值已排序,并且相应的col2值和行索引将与col1一起更改。因此,它们看起来没有分类。
'by' 参数采用列值列表。
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)
结果运行:
col1 col2 2 1 2 1 1 3 3 1 4 0 2 1
sort_values() 指定了从mergesort,heapsort和quicksort中选择算法的指定。Mergesort是唯一稳定的算法。
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)
结果运行:
col1 col2 1 1 3 2 1 2 3 1 4 0 2 1