搜索

查看: 3097|回复: 11

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

[复制链接]
发表于 2023-5-4 17:21:35 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:21:35 3097 11 看全部
目录
  • 按元素排序sort_values()
  • 升序,降序(参数ascending)
  • 多列排序
  • 缺失值NaN的处理(参数na_position)
  • 更改原始对象(参数inplace)
  • 按行方向排序(参数axis)
  • 按索引排序(行名/列名)sort_index()
  • 按行名索引排序
  • 升序,降序(参数ascending)
  • 更改原始对象(参数inplace)
  • 按列名列排序(参数axis)要对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排序内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-28 17:04:41 | 显示全部楼层
    掌舵的鱼1987 2023-6-28 17:04:41 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 12:44:31 | 显示全部楼层
    123456825 2023-6-29 12:44:31 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 15:28:23 | 显示全部楼层
    啤酒瓶空了缓 2023-6-29 15:28:23 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 16:15:55 | 显示全部楼层
    米老鼠和蓝精鼠v 2023-6-29 16:15:55 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 16:56:46 | 显示全部楼层
    ffycxyw2274436 2023-6-29 16:56:46 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 23:58:42 | 显示全部楼层
    音乐之家1 2023-6-29 23:58:42 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 01:08:53 | 显示全部楼层
    执着等待等wc 2023-6-30 01:08:53 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 01:13:21 | 显示全部楼层
    十二音阶囤 2023-6-30 01:13:21 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 01:50:56 | 显示全部楼层
    普通人物怨 2023-6-30 01:50:56 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表