首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Pandas GroupBy并选择特定列中具有最小值的行

Pandas GroupBy并选择特定列中具有最小值的行
EN

Stack Overflow用户
提问于 2019-01-31 23:45:59
回答 4查看 17.5K关注 0票数 23

我按A列对数据集进行分组,然后希望在B列中取最小值,在C列中取相应的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = pd.DataFrame({'A': [1, 2], 'B':[ 2, 4], 'C':[10, 4]})
data  
    A   B   C
0   1   4   3
1   1   5   4
2   1   2   10
3   2   7   2
4   2   4   4
5   2   6   6  

我想要得到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    A   B   C
0   1   2   10
1   2   4   4

目前,我按A分组,并创建一个值来指示我将保留在数据集中的行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = data.groupby('A').min()
a['A'] = a.index
to_keep = [str(x[0]) + str(x[1]) for x in a[['A', 'B']].values]
data['id'] = data['A'].astype(str) + data['B'].astype('str')
data[data['id'].isin(to_keep)]

我相信有一种更直接的方法可以做到这一点。我在这里看到了许多使用多索引的答案,但我希望在不向我的数据框架添加多索引的情况下这样做。谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-02-01 00:04:00

我觉得你想太多了。只需使用groupbyidxmin即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.loc[df.groupby('A').B.idxmin()]

   A  B   C
2  1  2  10
4  2  4   4

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.loc[df.groupby('A').B.idxmin()].reset_index(drop=True)

   A  B   C
0  1  2  10
1  2  4   4
票数 36
EN

Stack Overflow用户

发布于 2019-12-15 10:50:14

有类似的情况,但具有更复杂的列标题(例如"B val"),在这种情况下需要这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.loc[df.groupby('A')['B val'].idxmin()]
票数 4
EN

Stack Overflow用户

发布于 2021-09-23 15:25:51

我找到了一个更冗长的答案,但更有效的

以下是示例数据集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = pd.DataFrame({'A': [1,1,1,2,2,2], 'B':[4,5,2,7,4,6], 'C':[3,4,10,2,4,6]})
data

Out:
   A  B   C
0  1  4   3
1  1  5   4
2  1  2  10
3  2  7   2
4  2  4   4
5  2  6   6 

首先,我们将从groupby操作中获取序列的最小值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
min_value = data.groupby('A').B.min()
min_value

Out:
A
1    2
2    4
Name: B, dtype: int64

然后,我们将这一系列结果合并到原始数据帧上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = data.merge(min_value, on='A',suffixes=('', '_min'))
data

Out:
   A  B   C  B_min
0  1  4   3      2
1  1  5   4      2
2  1  2  10      2
3  2  7   2      4
4  2  4   4      4
5  2  6   6      4

最后,我们只得到B等于B_min的行,并删除B_min,因为我们不再需要它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = data[data.B==data.B_min].drop('B_min', axis=1)
data

Out:
   A  B   C
2  1  2  10
4  2  4   4

我已经在非常大的数据集上对它进行了测试,这是我能够在合理的时间内使其工作的唯一方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54470917

复制
相关文章
GoDaddy Email Marketing系列 - Campaigns设计和布局邮件模板
老蒋在前面的几篇GoDaddy Email Marketing文章中,已经能够较为简单的通过邮件营销订阅、管理用户,以及可以正常的推送邮件。只要我们能获取和导入用户,基本上推送是没有问题的,根据人数和邮件数量,我们如果不足还可以升级到其他方案和单独提升用户和邮件数量。
老蒋
2021/12/24
4320
GoDaddy Email Marketing系列 - Campaigns设计和布局邮件模板
Go 视图模板篇(五):模板布局和继承
在 Go 模板中,可以结合 define 指令和 template 指令实现模板布局功能。
学院君
2020/08/27
1.7K0
AngularJS--$on、$emit和$broadcast的使用
一,angularjs $broadcast $emit $on的处理思想 在一个controller里面通过事件触发一个方法,在方法里面通过$broadcast或$emit来定义一个变量,在父,子controller里面通过$on来获取。 $emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data html代码:  <div ng-controller="EventCon
NateHuang
2018/03/14
9330
ThinkPHP-模板布局和继承(三)
模板布局是指在视图文件中定义一个公共的布局,其他的视图文件可以继承该布局,并在其中插入自己的内容。这种方式可以减少代码的重复性,同时也可以方便地管理页面结构和样式。
堕落飞鸟
2023/05/02
6070
ThinkPHP-模板布局和继承(二)
在ThinkPHP中,可以使用extend方法来定义继承。继承文件通常包含{__SELF__}标记,该标记用于指示模板引擎将继承文件的内容替换为该标记所在的位置,并将父模板中的内容插入到该位置。例如:
堕落飞鸟
2023/05/02
4320
ThinkPHP-模板布局和继承(一)
在Web应用程序开发中,通常需要为多个页面定义相同的布局,包括页头、页脚、导航栏等。为了避免重复编写布局代码,ThinkPHP提供了模板布局和继承功能。
堕落飞鸟
2023/05/02
4680
npm install和cnpm install时的不同
npm 5版本,在延续npm 3扁平化依赖包安装方式的基础上,新增了一个package-lock.json文件。package-lock.json的主要作用就是锁定依赖项的安装目录和依赖包的版本信息。
kirin
2020/12/29
2.7K0
Spring MVC的配置和使用
Spring MVC的配置和使用 笔记仓库:https://github.com/nnngu/LearningNotes ---- Spring MVC需要的jar包 文章中 Spring MVC 使用的版本是 3.2.18 , 需要的 jar 包如下: spring-webmvc jstl 1.1.2 aopalliance 1.0 commons-logging 1.1.1 spring-aop spring-beans spring-context spring-core spring-express
nnngu
2018/03/15
8400
Spring MVC的配置和使用
Spring MVC的配置和使用
笔记仓库:https://github.com/nnngu/LearningNotes
nnngu
2018/02/13
7160
Spring MVC的配置和使用
Thymeleaf 模板布局和属性优先级
我们希望该 th:each 属性在之前执行, th:text 以便我们得到我们想要的结果,但是考虑到 HTML / XML 标准没有给标记中的属性写入的顺序赋予任何意义,优先级必须在属性本身中建立机制,以确保它将按预期工作。
爱敲代码的猫
2019/10/17
5820
EMLOG通过不同域名使用不同的模板
只在emlog根目录的index.php简单修改就能实现,也可以做多用户二级域名调用不同的模板。当然也可以修改模板不同域名显示不同用户的文章。 $templet=Option::get('nonce_templet'); $the_host = $_SERVER['HTTP_HOST']; if ($the_host=='i.isiyuan.net') {////判断域名或者浏览器UA使用不同的前台模板 $templet='pink';//前台模板名 } define('TEMPLAT
Youngxj
2018/06/06
2.1K0
谷歌发布 AngularJS 1.0,允许扩展HTML语法
谷歌2012年06月15日发布了一个全新的Web模板——AngularJS 1.0。 谷歌称, AngularJS可以让你扩展HTML的语法,以便清晰、简洁地表示应用程序中的组件,并允许将标准的HTM
张善友
2018/01/29
1.4K0
谷歌发布 AngularJS 1.0,允许扩展HTML语法
redis的使用和安装,redis基础和高级部分
在后端开发中,为了提高性能,对于一些经常查询但是又不太变化的内容会使用redis,比如前端的列表展示项等,如果数据有变化也可以清空缓存,让前端查一次数据库,所以使用redis相对高效和灵活.本文主要对于redis在linux上的使用和安装进行说明。 1.redis的安装 2.redis常用的命令 3.在阿里云上面安装redis 4.在vwmare上安装redis 5.利用jedis连接redis进行存入和输出 6.redis的高可用,哨兵机制,主从复制(安装三台redis服务器,一台主redis) 7.re
编程软文
2018/06/20
1K0
深入了解 AngularJS 路由的原理和使用技巧
在现代Web应用程序中,页面之间的导航是非常重要的。为了实现有效的导航和良好的用户体验,AngularJS 提供了一种强大的路由机制。通过使用 AngularJS 的路由功能,我们可以轻松地管理应用程序的不同视图,并根据URL的变化加载不同的组件。
网络技术联盟站
2023/07/04
2150
AngularJS的digest循环和$apply
最近在写AngularJS,遇到一个问题,在Ajax异步请求后台数据,然后将结果赋值给当前scope中某对象的属性,在页面中怎么都取不到,然而在js端却可以正常打印出来。
奋飛
2019/08/15
3.2K0
如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术。例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务。另外,还有最新的数据库技术、最新的设计模式和技术。 当选择最新的软件技术时,有几个因素在起作用,其中包括如何将这些技术整合起来。过去两年中,我最喜欢的一项技术就是设计单页面应用(SPA)的 AngularJS。作为一个微软stack开发者,我也是使用 ASP.NET MVC 平台实现 MVC 设计模式和并进行研究的粉丝,包括它的捆绑和压缩功能
葡萄城控件
2018/01/10
7.6K0
如何在 ASP.NET MVC 中集成 AngularJS(1)
qt 如何设计好布局和漂亮的界面。
​       曾几何时,我们都在黑框框下度过,我们受够了被黑框框支配的恐惧,想要跳出去,去看看外面,我们听够了类似于界面只是皮肤,背后的代码才是王道的话语,当你觉得黑框框已经满足不了你的时候,我觉得,你是时候做出一些改变了。如果你是学习C++的,我想qt可以作为你进入界面的一条选择,这篇文章,我们不讲函数,不讲类,总之就是不讲代码,我们来讲讲代码之外,聊一聊关于怎么布局,怎么用qt做出一个漂亮的界面❤️。 ​       我在一篇讲布局博文下面看到这样一句评论:为什么非要布局,直接自己摆不是更好吗?我相信很多刚接触布局的同学,都有这种想法,当然,当初的我和你们拥有一样的想法,但是现在,这种想法我不敢再有。之所以会说出这句话,要么是刚接触界面,要么是随手点了进来,阿巴阿巴看完评论了一句。刚开始接触界面,布局确实不是那么重要,我们的软件(都称不上是软件,就是一个空壳子)一共也没几个组件,两个按钮?三个文本框?刚接触的时候,你是否考虑过软件大小随意变化的问题,你是否考虑过后期添加组件,随着我们的软件越来越庞大,让组件自动分配空间显的尤为重要。
花狗Fdog
2020/10/28
10.3K0
qt 如何设计好布局和漂亮的界面。
Spring MVC @GetMapping和@PostMapping注解的使用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126462.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/23
6510
Spring MVC @GetMapping和@PostMapping注解的使用
Zencart模板结构和设计详解[通俗易懂]
Zen Cart的设计很简单,和其他HTML页面是一样的。只是整个页面分成了几个部分,并加入了PHP代码。 通常分为页眉 (header),页脚(footer),边框(sideboxes)。页面通过CSS样式表来控制,样式表控制了包括表格单元的背景图案、字体颜色和样 式等等,所以假如你需要修改边框标题栏的字体,那么就去查看样式表文件。 Zen Cart在页面添加图像有两种方式。可以使用图像目录的相对路径,或者在模板中用php变量定义图像。如果你使用https服务器,并且采用相对图像路 径,那么https的图像目录下也要有同样的图像,否则https服务器很可能会给出警告提示。 Zen Cart可以设置成任意的html/flash的界面,只是比通常的html页面的设计费时。你可以从修改缺省的模板开始,先修改CSS文件和三栏格式的 界面。开始先采用不同的颜色,很快就可以设计出完全不同的风格。
全栈程序员站长
2022/09/18
7970
点击加载更多

相似问题

angularjs材料设计和flex布局

10

MVC应用的布局/设计模板?

20

使用AngularJs和MVC填充部分视图的问题

20

如何设置Grails和AngularJS部分模板

47

使用MVC的AngularJS模板

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文