如何按索引和列对 Pandas DataFrame 进行排序?
在本文中,我们将讨论如何按索引和列对 Pandas 数据帧进行排序。
方法一:根据Index对DataFrame进行排序
我们可以使用 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=0)进行排序。
- 升序- 指定按升序或降序排序的顺序。它接受真或假。默认情况下为真。
- 就地 - 它指定对DataFrame的更改是临时的还是永久的。 inplace=False 表示临时,True 表示永久。
- kind -指定要使用的排序算法。它接受快速排序、合并排序、堆排序等。默认情况下,如果未提及,则为快速排序。
数据框 col2 col1 3 150 70 2 170 55 1 160 60
这是我们在以下代码中用于排序的 DataFrame。通过在 sort_index 方法中指定axis=0,我们可以对DataFrame 进行排序。即使我们默认在 sort_index 中没有指定轴参数,它也会根据行对 DataFrame 进行排序。
例子:
在这个例子中,DataFrame 是一个基于索引标签的排序 DataFrame,它是在Python语言中临时排序的。
Python3
# 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 temperorle based on index labels
print('Sorted by index')
hostelCandidates1.sort_index(axis=0)
Python3
# 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 temperorle based on column labels
print('Sorted by column name')
hostelCandidates1.sort_index(axis=1)
Python3
# 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
Sorted by index
col2 col1
1 160 60
2 170 55
3 150 70
方法2:基于列对DataFrame进行排序
要根据列名对DataFrame中的数据进行排序,那么我们需要将axis=1作为参数传递给Python语言的sort_index方法。
代码
Python3
# 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 temperorle 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 进行排序并在原始 DataFrame 上永久保存更改的示例代码:
这里排序操作直接在原始 DataFrame 上执行,并且由于 inplace=True 参数而永久保存更改。
Python3
# 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