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

2021年9月19日23:09:33 发表评论 1,950 次浏览

你可以使用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 = {'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:

  Brand  Price  Year
0    HH  22000  2015
1    TT  25000  2013
2    FF  27000  2018
3    AA  35000  2018

接下来,你将看到如何使用 4 个不同的示例对该 DataFrame 进行排序。

实例1:排序Pandas数据帧中的 升序 顺序

如何排序Pandas DataFrame?假设你要对 DataFrame 进行排序,以便品牌将以升序显示。在这种情况下,你需要将以下语法添加到代码中:

df.sort_values(by=['Brand'], inplace=True)

请注意,除非指定,否则默认情况下值将按升序排序。

完整的 Python 代码如下所示:

import pandas as pd
 
data = {'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' 将是最后一条:

  Brand  Price  Year
3    AA  35000  2018
2    FF  27000  2018
0    HH  22000  2015
1    TT  25000  2013

实例2:排序数据帧熊猫以 降序 顺序

或者,你可以按降序对 Brand 列进行排序。为此,对Pandas DataFrame进行排序,只需以下方式添加Ascending=False的条件 :

df.sort_values(by=['Brand'], inplace=True, ascending=False)

完整的 Python 代码为如下的Pandas DataFrame排序示例

import pandas as pd
 
data = {'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' 将是最后一条(正如你在为我们的样本应用降序时所期望的那样):

  Brand  Price  Year
1    TT  25000  2013
0    HH  22000  2015
2    FF  27000  2018
3    AA  35000  2018

示例 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 = {'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' 之前:

  Brand  Price  Year
1    TT  25000  2013
0    HH  22000  2015
2    FF  27000  2018
3    AA  35000  2018

还要注意的是,执行排序时,它被放置在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 = {'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' 之前:

  Brand  Price  Year
1    TT  25000  2013
0    HH  22000  2015
3    AA  35000  2018
2    FF  27000  2018

你可能需要查看Pandas 文档以了解有关在 Pandas DataFrame 中对值进行排序的更多信息。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: