📌  相关文章
📜  如何在Python中按多列对 Pandas DataFrame 进行排序?

📅  最后修改于: 2022-05-13 01:54:42.628000             🧑  作者: Mango

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

排序是根据条件要求对数据帧执行的操作之一。我们也可以按字母顺序和数字顺序对数据框进行排序。在本文中,我们将看到如何按多列对 Pandas Dataframe 进行排序。

方法一:使用 sort_values() 方法

对 DataFrame 进行排序:

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

创建数据帧:

Python3
#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


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


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


Python3
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)


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


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


输出:

示例 1:

蟒蛇3

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

输出:

在上面的示例中,升序值为 false,因此 DataFrame 按降序排序。

示例 2:

蟒蛇3

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

输出:

在上面的示例中,DataFrame 根据“Rank”列进行排序,并且 nan 值位于第一个。

示例 3:

蟒蛇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)

输出:

在上面的例子中,数据框是根据“Rank”列排序的,但索引号从 0 开始,因为我们已经给定了参数“ignore_index = True”。在其他示例中,索引是无序的,因为我们没有给出 'ignore_index' 参数。

方法二:使用sort_index()方法

示例 1:使用上面创建的数据框

蟒蛇3

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

输出:

DataFrame 的索引是按降序排列的,因为升序参数的值为 False。 DataFrame 按索引顺序排序。

示例 2:

蟒蛇3

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

输出: