如何在Python中对Pandas DataFrame进行多列排序

如何在Python中对Pandas DataFrame进行多列排序

排序是根据条件要求对数据框进行的操作之一。我们可以按字母以及数字顺序对数据框架进行排序。在这篇文章中,我们将看到如何通过多列对Pandas数据框架进行排序。

方法1:使用sort_values()方法

语法: df_name.sort_values(by column_name, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’, ignore_index=False, key=None)

参数:

by: 列表或列的名称,应按其排序。

axis:要排序的axis。(0或’axis’1或’列’)默认为0。(列号)。

ascending:升序或降序的排序。为多个排序顺序指定bool值列表。bool值的列表必须与’by’即column_names的值的数量相匹配。默认情况下,它是真实的。

inplace:默认为false,但如果它的值为true,则在原地执行操作,即在适当的地方。

kind:选择排序算法,如快速排序、合并排序、堆排序。默认是快速排序。

对数据框架进行排序:

  • 引入模块。
  • 创建一个DataFrame。
  • 现在,使用上述语法对一个DataFrame进行排序。

创建一个数据框架:

#import libraries
import numpy as np
import pandas as pd
 
# creating a dataframe
df = pd.DataFrame({'Name': ['Raj', 'Akhil', 'Sonum', 'Tilak', 'Divya', 'Megha'],
                   'Age': [20, 22, 21, 19, 17, 23],
                   'Rank': [1, np.nan, 8, 9, 4, np.nan]})
 
# printing the dataframe
print('DATAFRAME')
df
Python

输出:

如何在Python中对Pandas DataFrame进行多列排序?

示例 1:

# using the sorting function
print('SORTED DATAFRAME')
df.sort_values(by=['Age'], ascending=False)
Python

输出:

如何在Python中对Pandas DataFrame进行多列排序?

在上面的例子中,升序值为false,所以,DataFrame被排序为降序。

示例 2:

print('SORTED DATAFRAME')
df.sort_values(by = ['Rank', 'Age'], ascending = [True, False], na_position = 'first')
Python

输出:

如何在Python中对Pandas DataFrame进行多列排序?

在上面的例子中,DataFrame是根据’Rank’列进行排序的,nan的值被定位在第一位。

示例 3:

print('SORTED DATAFRAME')
df.sort_values(by = ['Name', 'Rank'], axis=0, ascending=[False, True], inplace=False,
               kind='quicksort', na_position='first', ignore_index=True, key=None)
Python

输出:

如何在Python中对Pandas DataFrame进行多列排序?

在上面的例子中,数据框架是根据’Rank’列进行排序的,但是由于我们给了’ignore_index = True’参数,所以索引号是以0开始。在其他例子中,由于我们没有给出’ignore_index’参数,所以索引是无序的。

方法2:使用sort_index()方法

语法:

df_name.sort_index(axis=0, level=None, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’, sort_remaining=True, ignore_index=False, key=None)

例子1:使用上述创建的数据框架

print('SORTED DATAFRAME')
df.sort_index(ascending=False)
Python

输出:

如何在Python中对Pandas DataFrame进行多列排序?

因为ascending参数的值为False,所以DataFrame的索引是以降序排列的。DataFrame是按照索引顺序排序的。

示例 2:

print('SORTED DATAFRAME')
df.sort_index(axis=1, ascending=False)
Python

输出:

如何在Python中对Pandas DataFrame进行多列排序?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册