📌  相关文章
📜  如何按索引和列对 Pandas DataFrame 进行排序?

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

如何按索引和列对 Pandas DataFrame 进行排序?

在本文中,我们将讨论如何按索引和列对 Pandas 数据帧进行排序。

方法一:根据Index对DataFrame进行排序

我们可以使用 sort_index 方法根据索引和列对 Pandas DataFrame 进行排序。

  • 要根据索引对 DataFrame 进行排序,我们需要将 axis=0 作为参数传递给 sort_index 方法。
  • 要根据列名对 DataFrame 进行排序,我们需要将 axis=1 作为参数传递给 sort_index 方法。

句法

参数

  • 轴 -指定根据索引或列进行排序的基础。默认情况下,它根据索引(即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