文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

pandas.DataFrame Series排序如何使用

2023-07-05 05:45

关注

这篇文章主要介绍“pandas.DataFrame Series排序如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pandas.DataFrame Series排序如何使用”文章能帮助大家解决问题。

以以下数据为例。

import pandas as pddf = 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     70df_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.nanprint(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     57df_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     70df_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     70df_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    NYdf.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排序如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯