你可以使用df.sort_values对 Pandas的DataFrame 进行排序。
在这个简短的教程中,你将看到 4 个对Pandas DataFrame进行排序的示例:
- 按升序排列的列
- 按降序排列的列
- 按多列 – 案例 1
- 按多列 – 案例 2
从一个简单的例子开始,假设你有以下关于汽车的数据 :
Brand | Price | Year |
HH | 22000 | 2015 |
TT | 25000 | 2013 |
FF | 27000 | 2018 |
AA | 35000 | 2018 |
然后,你可以通过创建以下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 中对值进行排序的更多信息。