广告
返回顶部
首页 > 资讯 > 精选 >pandas如何实现分组后取第N行
  • 421
分享到

pandas如何实现分组后取第N行

2023-06-14 08:06:02 421人浏览 薄情痞子
摘要

这篇文章主要介绍pandas如何实现分组后取第N行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!目的:把question_id 对应的user_answer转成ABCDsolutiondfa=df.groupby(&

这篇文章主要介绍pandas如何实现分组后取第N行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

目的:

pandas如何实现分组后取第N行

把question_id 对应的user_answer转成ABCD

solution

dfa=df.groupby('question_id').nth(0).reset_index()dfa['flag']='A'dfb=df.groupby('question_id').nth(1).reset_index()dfb['flag']='B'dfc=df.groupby('question_id').nth(2).reset_index()dfc['flag']='C'dfd=df.groupby('question_id').nth(3).reset_index()dfd['flag']='D'resdf=dfa.append([dfb,dfc,dfd])resdf.sort_values(by='question_id')

result

pandas如何实现分组后取第N行

focus

g.nth(0) #同 g.first()g.head(1)g.last()g.nth(2)g.nth(-1)g.nth(0,dropna='any')g.B.nth(0,dropna='all')g.groupsg.get_group(134429)g.discribe()g.agg([np.mean,np.sum.np,std])

补充:pandas的分组取最大多行并求和函数nlargest()

在pandas库里面,我们常常关心的是最大的前几个,比如销售最好的几个产品,几个店,等。之前讲到的head(), 能够看到看到DF里面的前几行,如果需要看到最大或者最小的几行就需要先进行排序。max()和min()可以看到最大或者最小值,但是只能看到一个值。

pandas如何实现分组后取第N行

所以我们可以使用nlargest()函数,nlargest()的优点就是能一次看到最大的几行,而且不需要排序。缺点就是只能看到最大的,看不到最小的。

我们来看看单价排在前十的数据:

pandas如何实现分组后取第N行

单价排在前十的数据

nlargest()的第一个参数就是截取的行数。第二个参数就是依据的列名。

这样就可以筛选出单价最高的前十行,而且是按照单价从最高到最低进行排列的,所以还是按照之前的索引

还可以按照total_price来进行排名:

pandas如何实现分组后取第N行

按照total_price排名

nlargest还有一个参数,keep='first'或者'last'。当出现重复值的时候,keep='first',会选取在原始DataFrame里排在前面的,keep='last'则去排后面的。

由于nlagerst()不能去最小的多个值,如果我们一定要使用这个函数进行选取也是可以的.

先设置一个辅助列:

pandas如何实现分组后取第N行

先设置一个辅助列

然后在进行选取:

pandas如何实现分组后取第N行

以辅助列进行选取

当然了,也可以通过head()加上排序进行选取的。

那以前这些操作都可以通过其它函数来进行替代的话,nlargest()有什么必要介绍吗?或者说学不学这个函数有什么关系吗?

这就是我们今天要重点介绍的,如果说要选择不同location_road下的前五名要怎么操作呢?

很多人可能第一反应会想到先分组然后进行max()操作,但是这样的操作只能选择最大的一列:

pandas如何实现分组后取第N行

使用max()

但是使用max有一个问题,就是选取的是每一列的最大值,而不是选取最大值的那一行,也就是说只能在选取单列的最大值的时候才是准确的。

这个时候我们就要想到apply和lambda的自定义函数了:

pandas如何实现分组后取第N行

选取多个指标的TOP(N)

这样就选出了不同loaction_road的price排在前五的行了。

nlargest()函数在这种场景下使用是非常方便的,而且结果也已经默认排好顺序了。

还有一些场景下需要计算分组的前几名,然后在进行求和的,这个我们也可以使用nlargest进行操作:

pandas如何实现分组后取第N行

分组之后进行求和

使用这种方法会出现报错提示,这个因为在列和索引都存在loaction_road,有重复,系统有警告,在实际使用时可以先改列名再操作。我们也可以换一种方式直接按照索引进行求和,这样就没有警告了:

pandas如何实现分组后取第N行

以上是“pandas如何实现分组后取第N行”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: pandas如何实现分组后取第N行

本文链接: https://www.lsjlt.com/news/269267.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pandas 实现分组后取第N行
    目的: 把question_id 对应的user_answer转成ABCD solution dfa=df.groupby('question_id').nth(0).rese...
    99+
    2022-11-11
  • pandas如何实现分组后取第N行
    这篇文章主要介绍pandas如何实现分组后取第N行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!目的:把question_id 对应的user_answer转成ABCDsolutiondfa=df.groupby(&...
    99+
    2023-06-14
  • pandas分组排序 如何获取第二大的数据
    Python用来做数据分析很方便,网上很多关于找数据中第二大的方法,但是大多数都是关于SQL的,于是我挑战一下用Python来做这件事(主要是SQL写的不好>_<),上代...
    99+
    2022-11-11
  • Pandas如何实现分组数据
    这篇文章给大家分享的是有关Pandas如何实现分组数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分组数据这种操作在数据科学家和分析师的日常生活中经常执行。Pandas提供了一个基本的函数来执行数据分组,即Gr...
    99+
    2023-06-27
  • pandas删除部分数据后重新生成索引如何实现
    这篇文章主要介绍“pandas删除部分数据后重新生成索引如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pandas删除部分数据后重新生成索引如何实现”文章能帮助大家解决问题。pandas删除...
    99+
    2023-07-02
  • php如何实现number格式化后取消千分位
    这篇文章主要介绍了php如何实现number格式化后取消千分位的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现number格式化后取消千分位文章都会有所收获,下面我们一起来看看吧。在PHP中,可以利...
    99+
    2023-07-02
  • Python实现如何根据文件后缀进行分类
    目录使用os和shutil读取目标文件夹下的所有文件获取每一个文件的完整路径分组之后的文件展示获取分组之后的文件夹路径移动文件到目标文件夹完整代码使用pathlib使用Path读取文...
    99+
    2022-11-12
  • 贪心算法之如何实现K次取反后最大化的数组和
    本篇内容主要讲解“贪心算法之如何实现K次取反后最大化的数组和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“贪心算法之如何实现K次取反后最大化的数组和”吧!很多录...
    99+
    2022-10-19
  • mysql group_concat如何实现把分组字段写成一行
    这篇文章给大家分享的是有关mysql group_concat如何实现把分组字段写成一行的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。功能:将group by产生的同一个分组中的...
    99+
    2022-10-18
  • C++如何实现在有序数组中查找元素的第一个和最后一个位置
    这篇文章主要讲解了“C++如何实现在有序数组中查找元素的第一个和最后一个位置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++如何实现在有序数组中查找元素的第一个和最后一个位置”吧!Fin...
    99+
    2023-06-20
  • 如何进行Java前后端分离的在线点餐系统实现
    这篇文章跟大家分析一下“如何进行Java前后端分离的在线点餐系统实现”。内容详细易懂,对“如何进行Java前后端分离的在线点餐系统实现”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习...
    99+
    2023-06-28
  • PHP与Vue开发:如何实现支付后获取不同类型商品的会员积分
    引言:在电商平台中,会员积分是一种常见的激励机制,可以通过购买商品或者完成特定任务来获得积分。然而,对于不同类型的商品,积分的获取方式可能存在差异。本文将结合PHP和Vue开发,介绍如何在支付后获取不同类型商品的会员积分,同时提供具体代码示...
    99+
    2023-10-21
    VUE PHP 积分处理
  • 如何实现批处理获取文件夹下面txt文件行数并添加到文件名后
    本篇内容介绍了“如何实现批处理获取文件夹下面txt文件行数并添加到文件名后”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法一:@echo&...
    99+
    2023-06-08
  • 如何实现把下一行数字复制到前面一行后面并用空格分开的批处理
    小编给大家分享一下如何实现把下一行数字复制到前面一行后面并用空格分开的批处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我想把一文本,其内容为这样的形式: 25 69 89 99 120 处理成以下的形式: 25 69 ...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作