如何通过索引和列对Pandas数据框架进行排序
在这篇文章中,我们将讨论如何通过索引和列对Pandas数据框架进行排序。
方法1:基于索引对数据帧进行排序
我们可以使用sort_index方法根据索引和列对Pandas DataFrame进行排序。
- 为了根据索引对DataFrame进行排序,我们需要将axis=0作为一个参数传递给sort_index方法。
- 为了根据列名对DataFrame进行排序,我们需要将axis=1作为参数传递给sort_index方法。
语法
DataFrame_Name.sort_index(axis=0, ascending=True, inplace=False, kind=’quicksort’)
参数
- axis- 指定在哪个基础上排序,是基于索引还是基于列。默认情况下,它基于索引进行排序,即axe=0。
- ascending- 指定以何种顺序排序,是升序还是降序。它接受True或False。默认情况下,它是True。
- inplace- 它指定对DataFrame的改变是临时的还是永久的。 inplace=False表示临时的,True表示永久的。
- kind- 指定要使用的排序算法。它接受quicksort、mergesort、heapsort等。默认情况下,如果没有提到,它是quicksort。
DataFrame | col2 | col1 |
---|---|---|
3 | 150 | 70 |
2 | 170 | 55 |
1 | 160 | 60 |
这就是我们在下面的代码中用于排序的DataFrame。通过在sort_index方法中指定axis=0,我们可以对DataFrame进行排序。即使我们没有在sort_index中指定axis参数,默认情况下也会根据行来对DataFrame进行排序。
示例:
在这个例子中,DataFrame是一个基于索引标签的排序的DataFrame,这是用python语言临时排序的。
# import necessary packages
import pandas as pd
# create 2 dataframes with different indexes
hostelCandidates1 = pd.DataFrame({'col2': [150, 170, 160],
'col1': [70, 55, 60]},
index=[3, 2, 1])
print('original DataFrame')
print(hostelCandidates1)
# sorted temporarily based on index labels
print('Sorted by index')
hostelCandidates1.sort_index(axis=0)
输出
original DataFrame
col2 col1
3 150 70
2 170 55
1 160 60
Sorted by index
col2 col1
1 160 60
2 170 55
3 150 70
方法2:基于列的DataFrame排序
为了根据列名对DataFrame中的数据进行排序,我们需要将axis=1作为参数传递给python语言中的sort_index方法。
代码
# import necessary packages
import pandas as pd
# create 2 dataframes with different indexes
hostelCandidates1 = pd.DataFrame({'col2': [150, 170, 160],
'col1': [70, 55, 60]},
index=[3, 2, 1])
print('original DataFrame')
print(hostelCandidates1)
# sorted temporarily based on column labels
print('Sorted by column name')
hostelCandidates1.sort_index(axis=1)
输出
original DataFrame
col2 col1
3 150 70
2 170 55
1 160 60
Sorted by column name
col1 col2
3 70 150
2 55 170
1 60 160
示例代码对数据框架进行排序并永久保存原始数据框架的变化。
这里的排序操作是直接在原始DataFrame上进行的,由于inplace=True参数的存在,变化被永久保存。
# import necessary packages
import pandas as pd
# create 2 dataframes with different indexes
hostelCandidates1 = pd.DataFrame({'col2': [150, 170, 160],
'col1': [70, 55, 60]},
index=[3, 2, 1])
print('original DataFrame')
print(hostelCandidates1)
# sorted permanently based on column labels
hostelCandidates1.sort_index(axis=1, inplace=True)
print('Modified Original DataFrame')
print(hostelCandidates1)
输出
original DataFrame
col2 col1
3 150 70
2 170 55
1 160 60
Modified Original DataFrame
col1 col2
3 70 150
2 55 170
1 60 160