Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
排序是数据分析中一个非常基本的需求,这篇文章介绍一下 Dataframe 数据的排序。
试题:如何对 DataFrame 数据进行排序?
(难度:medium)
分析 DataFrame 有两种排序方式:
- 按标签排序
- 按实际的值排序
按标签排序
使用sort_index()
方法,通过axis
参数指定行标签or列标签,ascending
参数指定升序or降序。默认对行标签进行升序排序。具体使用方法如下:
# 按行标签排序
sort_df = df.sort_index()
sort_df
# 按行标签降序排序
sort_df = df.sort_index(ascending=False)
sort_df
# 按列标签排列
sort_df = df.sort_index(axis=1)
sort_df
# 按列标签降序排列
sort_df = df.sort_index(axis=1, ascending=False)
sort_df
复制代码
按实际的值排序
sort_values()
方法可以按照值进行排序,它接受一个by
参数,来指定要排序的列名。格式如下:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False)
复制代码
-
axis
:默认为0时,表示纵向排序;当axis=1时,表示横向排序。 -
by
:字符串or列表,表示要排序的行or列名。 -
ascending
:默认为True升序,可以是[True,False]类似的形式,表示第一字段升序,第二个降序,但要与by的内容对应。 -
inplace
:是否覆盖原值。
# 按score的值进行升序排序
sort_df = df.sort_values(by='score')
sort_df
# 先按class的值升序排序,一样再按score的值降序排序
sort_df = df.sort_values(by=['class','score'], ascending=[True,False])
sort_df
复制代码
结果输出为:
id | name | score | class |
| - | -- | ----- | ----- | ----- |
| 0 | 1 | one | 90 | 1 |
| 1 | 2 | two | 88 | 1 |
| 2 | 3 | three | 89 | 2 |
| 3 | 4 | four | 65 | 2 |
| 4 | 5 | five | 95 | 3 |
复制代码
扩展:对 Dataframe 数据进行纵向排序后,如果行索引乱序了,我们可以使用reset_index()
方法重新设置编号。
sort_df = sort_df.reset_index(drop=True)
sort_df
复制代码
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !