pandas.DataFrame Series排序的使用(sort_values,sort_index)

 更新时间:2023年02月23日 09:36:59   作者:饺子大人  
本文主要介绍了pandas.DataFrame Series排序的使用(sort_values,sort_index),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

要对pandas.DataFrame和pandas.Series进行排序,可以使用sort_values()和sort_index()方法。

请注意,旧版本中存在的sort()方法已废弃。

按元素排序sort_values()

  • 升序,降序(参数ascending)
  • 多列排序
  • 缺失值NaN的处理(参数na_position)
  • 更改原始对象(参数inplace)

按行方向排序(参数axis)

  • 按索引排序(行名/列名)sort_index()
  • 按行名索引排序
  • 升序,降序(参数ascending)
  • 更改原始对象(参数inplace)
  • 按列名列排序(参数axis)

以以下数据为例。

import pandas as pd

df = pd.read_csv('./data/17/sample_pandas_normal.csv')
print(df)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

示例是pandas.DataFrame,但是pandas.Series也具有sort_values()和sort_index(),因此用法是相同的。

按元素排序sort_values()

使用sort_values()方法根据元素值进行排序。

在第一个参数(by)中指定要排序的列的标签(列名)。

df_s = df.sort_values('state')
print(df_s)
#       name  age state  point
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 3     Dave   68    TX     70

升序,降序(参数ascending)

默认为升序。如果要使用降序,请将升序参数设置为False。

df_s = df.sort_values('state', ascending=False)
print(df_s)
#       name  age state  point
# 3     Dave   68    TX     70
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88

多列排序

如果将第一个参数指定为列表,则可以按多列排序。

从列表的后面开始顺序排序的图像。最后,它按列表中的第一列排序。

df_s = df.sort_values(['state', 'age'])
print(df_s)
#       name  age state  point
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88
# 1      Bob   42    CA     92
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 3     Dave   68    TX     70

df_s = df.sort_values(['age', 'state'])
print(df_s)
#       name  age state  point
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 1      Bob   42    CA     92
# 3     Dave   68    TX     70

如果将升序参数指定为列表,则可以为每列选择升序或降序。

df_s = df.sort_values(['age', 'state'], ascending=[True, False])
print(df_s)
#       name  age state  point
# 2  Charlie   18    CA     70
# 0    Alice   24    NY     64
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57
# 1      Bob   42    CA     92
# 3     Dave   68    TX     70

缺失值NaN的处理(参数na_position)

如果缺少值NaN,则默认情况下将对其排序。

df_nan = df.copy()
df_nan.iloc[:2, 1] = pd.np.nan
print(df_nan)
#       name   age state  point
# 0    Alice   NaN    NY     64
# 1      Bob   NaN    CA     92
# 2  Charlie  18.0    CA     70
# 3     Dave  68.0    TX     70
# 4    Ellen  24.0    CA     88
# 5    Frank  30.0    NY     57

df_nan_s = df_nan.sort_values('age')
print(df_nan_s)
#       name   age state  point
# 2  Charlie  18.0    CA     70
# 4    Ellen  24.0    CA     88
# 5    Frank  30.0    NY     57
# 3     Dave  68.0    TX     70
# 0    Alice   NaN    NY     64
# 1      Bob   NaN    CA     92

如果参数na_position =‘first’,它将被安排在开头。

df_nan_s = df_nan.sort_values('age', na_position='first')
print(df_nan_s)
#       name   age state  point
# 0    Alice   NaN    NY     64
# 1      Bob   NaN    CA     92
# 2  Charlie  18.0    CA     70
# 4    Ellen  24.0    CA     88
# 5    Frank  30.0    NY     57
# 3     Dave  68.0    TX     70

要删除缺少的值或将其替换为另一个值,请参阅以下文章。

Pandas删除,替换并提取其中的缺失值NaN(dropna,fillna,isnull)

更改原始对象(参数inplace)

默认情况下,将返回一个新的排序对象,但是如果inplace参数为True,则原始对象本身将被更改。

df.sort_values('state', inplace=True)
print(df)
#       name  age state  point
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 3     Dave   68    TX     70

按行方向排序(参数axis)

与前面的示例一样,默认排序为列(垂直)。

如果要按行方向排序,请将参数轴设置为1。其他参数与前面的示例相同。

由于如果数值和字符串混合使用会发生错误,因此在此处删除字符串列,仅显示数值列。有关drop()方法,请参见以下文章。

Pandas.DataFrame删除指定行和列(drop

df_d = df.drop(['name', 'state'], axis=1)
print(df_d)
#    age  point
# 1   42     92
# 2   18     70
# 4   24     88
# 0   24     64
# 5   30     57
# 3   68     70

df_d .sort_values(by=1, axis=1, ascending=False, inplace=True)
print(df_d)
#    point  age
# 1     92   42
# 2     70   18
# 4     88   24
# 0     64   24
# 5     57   30
# 3     70   68

按索引排序(行名/列名)sort_index()

使用sort_index()方法按索引(行名/列名)排序。

按行名索引排序

默认情况下,sort_index()根据行名在列方向(垂直方向)上排序。

print(df)
#       name  age state  point
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 3     Dave   68    TX     70

df_s = df.sort_index()
print(df_s)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

升序,降序(参数ascending)

与sort_values()一样,默认值为升序。如果要使用降序,请将升序参数设置为False。

df_s = df.sort_index(ascending=False)
print(df_s)
#       name  age state  point
# 5    Frank   30    NY     57
# 4    Ellen   24    CA     88
# 3     Dave   68    TX     70
# 2  Charlie   18    CA     70
# 1      Bob   42    CA     92
# 0    Alice   24    NY     64

更改原始对象(参数inplace)

与sort_values()一样,可以指定参数inplace。如果为True,则更改原始对象。

df.sort_index(inplace=True)
print(df)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

按列名列排序(参数axis)

与sort_values()类似,如果设置了参数axis = 1,则根据列名在行方向(水平方向)上进行排序。可以像前面的示例一样使用其他参数。

df_s = df.sort_index(axis=1)
print(df_s)
#    age     name  point state
# 0   24    Alice     64    NY
# 1   42      Bob     92    CA
# 2   18  Charlie     70    CA
# 3   68     Dave     70    TX
# 4   24    Ellen     88    CA
# 5   30    Frank     57    NY

df.sort_index(axis=1, ascending=False, inplace=True)
print(df)
#   state  point     name  age
# 0    NY     64    Alice   24
# 1    CA     92      Bob   42
# 2    CA     70  Charlie   18
# 3    TX     70     Dave   68
# 4    CA     88    Ellen   24
# 5    NY     57    Frank   30

到此这篇关于pandas.DataFrame Series排序的使用(sort_values,sort_index)的文章就介绍到这了,更多相关pandas DataFrame Series排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何使用Gitlab API实现批量的合并分支

    Python如何使用Gitlab API实现批量的合并分支

    这篇文章主要介绍了Python如何使用Gitlab API实现批量的合并分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • PyCharm配置第三方镜像源的解决方法

    PyCharm配置第三方镜像源的解决方法

    在pycharm中配置第三方镜像后,秩序搜索需要的第三方库,就可以使用第三方镜像下载,速度不是一般的快,这篇文章主要介绍了PyCharm配置第三方镜像源,需要的朋友可以参考下
    2024-01-01
  • Python3通过Luhn算法快速验证信用卡卡号的方法

    Python3通过Luhn算法快速验证信用卡卡号的方法

    这篇文章主要介绍了Python3通过Luhn算法快速验证信用卡卡号的方法,涉及Python中Luhn算法的使用技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • 使用Python的判断语句模拟三目运算

    使用Python的判断语句模拟三目运算

    这篇文章主要介绍了使用Python的判断语句模拟三目运算,Python中没有类似C语言那样的三目运算符,不过可以进行简单地模拟实现,需要的朋友可以参考下
    2015-04-04
  • Pytorch实现的手写数字mnist识别功能完整示例

    Pytorch实现的手写数字mnist识别功能完整示例

    这篇文章主要介绍了Pytorch实现的手写数字mnist识别功能,结合完整实例形式分析了Pytorch模块手写字识别具体步骤与相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • python实现输入的数据在地图上生成热力图效果

    python实现输入的数据在地图上生成热力图效果

    今天小编就为大家分享一篇python实现输入的数据在地图上生成热力图效果,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 将自己的Python包发布到PyPI上的教程详解

    将自己的Python包发布到PyPI上的教程详解

    在Python中我们经常使用pip来安装第三方Python软件包,其实我们每个人都可以免费地将自己写的Python包发布到PyPI上,本文小编就来教教大家如何将自己的Python包发布到PyPI上吧
    2023-09-09
  • 浅谈Python之Django

    浅谈Python之Django

    这篇文章主要介绍了Python3中的Django,小编觉得这篇文章写的还不错,需要的朋友们下面随着小编来一起学习学习吧,希望能够给你带来帮助
    2021-10-10
  • python3 实现口罩抽签的功能

    python3 实现口罩抽签的功能

    这篇文章主要介绍了python3 实现 口罩抽签的功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Django用户认证系统 组与权限解析

    Django用户认证系统 组与权限解析

    这篇文章主要介绍了Django用户认证系统 组与权限解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论