如何在Python中按多列对 Pandas DataFrame 进行排序?
排序是根据条件要求对数据帧执行的操作之一。我们也可以按字母顺序和数字顺序对数据框进行排序。在本文中,我们将看到如何按多列对 Pandas Dataframe 进行排序。
方法一:使用 sort_values() 方法
Syntax: df_name.sort_values(by column_name, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’, ignore_index=False, key=None)
Parameters:
by: name of list or column it should sort by
axis: Axis to be sorted.(0 or ‘axis’ 1 or ‘column’) by default its 0.(column number)
ascending: Sorting ascending or descending. Specify lists of bool values for multiple sort orders. The list of bool values must match the no. of values of ‘by’ i.e. column_names. By default it is true.
inplace: By default it is false. but if its value is true it performs operation in-place i.e. in proper place.
kind: Choice of sorting algorithm like quick sort. merge sort, heap sort. by default it is quick sort.
对 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()方法
Syntax:
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:使用上面创建的数据框
蟒蛇3
print('SORTED DATAFRAME')
df.sort_index(ascending=False)
输出:
DataFrame 的索引是按降序排列的,因为升序参数的值为 False。 DataFrame 按索引顺序排序。
示例 2:
蟒蛇3
print('SORTED DATAFRAME')
df.sort_index(axis=1, ascending=False)
输出: