Pandas 教程-Pandas DataFrame.sort()
整理:python架构师
在DataFrame中,我们可以通过不同的方式高效地进行排序:
按标签
按实际值
import pandas as pdimport numpy as npinfo=pd.DataFrame(np.random.randn(10,2),index=[1,3,7,2,4,5,9,8,0,6],columns=['col2','col1'])print(info)
col2 col11 -0.456763 -0.9311563 0.242766 -0.7935907 1.133803 0.4543632 -0.843520 -0.9382684 -0.018571 -0.3159725 -1.951544 -1.3001009 -0.711499 0.0314918 1.648080 0.6956370 2.576250 -0.6251716 -0.301717 0.879970
在上面的DataFrame中,标签和值都是未排序的。所以,让我们看看如何进行排序:
按标签
可以使用sort_index()方法对DataFrame进行排序。可以通过传递轴参数和排序顺序来完成。默认情况下,按行标签升序排序。
示例
import pandas as pdimport numpy as npinfo=pd.DataFrame(np.random.randn(10,2),index=[1,2,5,4,8,7,9,3,0,6],columns = ['col4','col3'])info2=info.sort_index()print(info2)
col4 col30 0.698346 1.8975731 1.247655 -1.2089082 -0.469820 -0.5469183 -0.793445 0.3620204 -1.184855 -1.5964895 1.500156 -0.3976356 -1.239635 -0.2555457 1.110986 -0.6817288 -1.797474 0.1088409 0.063048 1.512421
专属福利 👉点击领取:最全Python资料合集
排序顺序
通过将布尔值传递给ascending参数,可以控制排序的顺序。
示例:
import pandas as pdimport numpy as npinfo= pd.DataFrame(np.random.randn(10,2),index=[1,4,7,2,5,3,0,8,9,6],columns = ['col4','col5'])info_2 = info.sort_index(ascending=False)print(info)
col4 col51 0.664336 -1.8465334 -0.456203 -1.2553117 0.537063 -0.7743842 -1.937455 0.2573155 0.331764 -0.7410203 -0.082334 0.3043900 -0.983810 -0.7115828 0.208479 -1.2346409 0.656063 0.1227206 0.347990 -0.410401
对列进行排序:
我们可以通过传递与其值相关的轴参数0或1,对列标签进行排序。默认情况下,axis=0,它按行排序。
示例:
import pandas as pdimport numpy as npinfo = pd.DataFrame(np.random.randn(10,2),index=[1,4,8,2,0,6,7,5,3,9],columns = ['col4','col7'])info_2=info.sort_index(axis=1)print(info_2)
col4 col71 -0.509367 -1.6095144 -0.516731 0.3973758 -0.201157 -0.0098642 1.440567 1.0584360 0.955486 -0.0097776 -1.211133 0.4151477 0.095644 0.5317275 -0.881241 -0.8713423 0.206327 -1.1547249 1.418127 0.146788
按实际值
这是DataFrame中可以执行的另一种排序方式。与索引排序类似,sort_values()是按值排序的方法。
它还提供了一种功能,即我们可以指定要排序的DataFrame的列名。这是通过传递'by'参数来完成的。
示例:
import pandas as pdimport numpy as npinfo = pd.DataFrame({'col1':[7,1,8,3],'col2':[8,12,4,9]})info_2 = info.sort_values(by='col2')print(info_2)
col1 col22 8 40 7 83 3 91 1 12
在上面的输出中,注意值仅按col2排序,并且相应的col1值和行索引将随着col2而改变。因此,它们看起来是未排序的。
参数
columns: 在排序之前,您必须传递一个对象或列名。
ascending: 传递一个布尔值,用于按升序排序。其默认值为True。
axis: 0或索引;1或'columns'。默认值为0。它决定是按索引还是按列排序。
inplace: 传递一个布尔值。其默认值为false。在对DataFrame进行排序时,它会修改对此对象的任何其他视图,并且不会在排序DataFrame时创建新的实例。
kind: 'heapsort', 'mergesort', 'quicksort'。这是一个可选参数,仅在对单个列或标签进行排序时应用。
na_position: 'first', 'last'。'first'将NaN放在开头,而'last'*将NaN放在末尾。默认选项是last。
热门推荐