如何对Pandas DataFrame进行排序(示例代码)

你可以使用df.sort_values对 Pandas的DataFrame 进行排序。
在这个简短的教程中,你将看到 4 个对Pandas DataFrame进行排序的示例:

  1. 按升序排列的列
  2. 按降序排列的列
  3. 按多列 – 案例 1
  4. 按多列 – 案例 2
从一个简单的例子开始,假设你有以下关于汽车的数据  :
BrandPriceYear
HH220002015
TT250002013
FF270002018
AA350002018
然后,你可以通过创建以下DataFrame在 Python 中捕获该数据:
import pandas as pd data = https://www.lsbin.com/{'Brand': [ 'HH','TT','FF','AA'], 'Price': [ 22000,25000,27000,35000], 'Year': [ 2015,2013,2018,2018] } df = pd.DataFrame(data, columns=[ 'Brand','Price','Year'])print (df)

如果你运行上面的Python代码,你会得到以下 DataFrame:
BrandPriceYear 0HH220002015 1TT250002013 2FF270002018 3AA350002018

接下来,你将看到如何使用 4 个不同的示例对该 DataFrame 进行排序。
实例1:排序Pandas数据帧中的 升序 顺序如何排序Pandas DataFrame?假设你要对 DataFrame 进行排序,以便品牌将以升序显示。在这种情况下,你需要将以下语法添加到代码中:
df.sort_values(by=[ 'Brand'], inplace=True)

请注意,除非指定,否则默认情况下值将按升序排序。
完整的 Python 代码如下所示:
import pandas as pd data = https://www.lsbin.com/{'Brand': [ 'HH','TT','FF','AA'], 'Price': [ 22000,25000,27000,35000], 'Year': [ 2015,2013,2018,2018] } df = pd.DataFrame(data, columns=[ 'Brand','Price','Year'])# sort Brand in an ascending order df.sort_values(by=[ 'Brand'], inplace=True)print (df)

运行代码时,你会注意到 Brand 确实会按升序排序,其中 'AA' 将是第一条记录,而 'TT' 将是最后一条:
BrandPriceYear 3AA350002018 2FF270002018 0HH220002015 1TT250002013

实例2:排序数据帧熊猫以 降序 顺序或者,你可以按降序对 Brand 列进行排序。为此,对Pandas DataFrame进行排序,只需以下方式添加Ascending=False的条件 :
df.sort_values(by=[ 'Brand'], inplace=True, ascending=False)

完整的 Python 代码为如下的Pandas DataFrame排序示例:
import pandas as pd data = https://www.lsbin.com/{'Brand': [ 'HH','TT','FF','AA'], 'Price': [ 22000,25000,27000,35000], 'Year': [ 2015,2013,2018,2018] } df = pd.DataFrame(data, columns=[ 'Brand','Price','Year'])# sort Brand in a descending order df.sort_values(by=[ 'Brand'], inplace=True, ascending=False)print (df)

如何排序Pandas DataFrame?你现在会注意到 'TT' 将是第一条记录,而 'AA' 将是最后一条(正如你在为我们的样本应用降序时所期望的那样):
BrandPriceYear 1TT250002013 0HH220002015 2FF270002018 3AA350002018

示例 3:按多列排序 – 案例 1但是如果你想按多列排序怎么办?
在这种情况下,你可以使用以下模板按多列排序:
df.sort_values(by=[ 'First Column','Second Column',...], inplace=True)

假设你想要作为排序依据  双方的“年份”和“价格”。由于你有两个年份为 2018 年的记录(即“FF”和“AA”品牌),那么按第二列(“价格”列)排序会很有用:
df.sort_values(by=[ 'Year','Price'], inplace=True)

这是你可以使用的 Python 代码:
import pandas as pd data = https://www.lsbin.com/{'Brand': [ 'HH','TT','FF','AA'], 'Price': [ 22000,25000,27000,35000], 'Year': [ 2015,2013,2018,2018] } df = pd.DataFrame(data, columns=[ 'Brand','Price','Year'])# sort by multiple columns: Year and Price df.sort_values(by=[ 'Year','Price'], inplace=True)print (df)

请注意,所有记录现在都按年份和价格升序排序,因此 'FF' 将出现在 'AA' 之前:
BrandPriceYear 1TT250002013 0HH220002015 2FF270002018 3AA350002018

还要注意的是,执行排序时,它被放置在df.sort_values的“年份”列将优先级之前,  “价格”栏。
示例 4:按多列排序 – 案例 2对Pandas DataFrame进行排序,最后,我们按照‘Year’和‘Brand’的列进行排序,如下所示:
df.sort_values(by=[ 'Year','Brand'], inplace=True)

完整的 Python 代码如下Pandas DataFrame排序示例所示:
import pandas as pd data = https://www.lsbin.com/{'Brand': [ 'HH','TT','FF','AA'], 'Price': [ 22000,25000,27000,35000], 'Year': [ 2015,2013,2018,2018] } df = pd.DataFrame(data, columns=[ 'Brand','Price','Year'])# sort by multiple columns: Year and Brand df.sort_values(by=[ 'Year','Brand'], inplace=True)print (df)

如何排序Pandas DataFrame?你现在将看到所有记录都按年份和品牌按升序排序,因此这次 'AA' 将出现在 'FF' 之前:
BrandPriceYear 1TT250002013 0HH220002015 3AA350002018 2FF270002018

【如何对Pandas DataFrame进行排序(示例代码)】你可能需要查看Pandas 文档以了解有关在 Pandas DataFrame 中对值进行排序的更多信息。

    推荐阅读