groupby+agg
一.在处理pandas表格数据时,有时会遇到这样的问题:按照某一列聚合后,判断另一列是否出现唯一值,比如安泰杯--跨境电商比赛中,某个商人的ID如果出现在两个国家(xx和yy),则要剔除这样的数据,这就需要我们按照商人ID进行groupby,然后判断每个商人所属的国家是否值唯一,不唯一则剔除。
def unique_num(x):
return len(np.unique(x)) #自定义函数
train.groupby(['buyer_admin_id']).agg({'buyer_country_id':unique_num})
二.下面对groupby和agg使用方法进行总结:
1. 分组后,返回一个含有分组大小的Series
按key1分组: df.groupby(['key1']).size()
按[key1,key2]分组: df.groupby(['key1','key2']).size()
2. 对data1按key1进行分组,并计算data1列的平均值
df['data1'].groupby(df['key1']).mean()
说明:groupby没有进行任何的计算。它只是进行了一个分组。数据(Series)根据分组键进行了聚合,产生了一个新的Series,其索引为key1列中的唯一值。
3.对data1按[key1,key2]进行分组,并计算data1的平均值
df.groupby(['key1','key2'])['data1'].mean()
4.agg函数使用:
1)df.groupby(['key1'])['data1'].min() ==
df.groupby(['key1'])['data1'].agg({'min'}) ==
(推荐使用)df.groupby(['key1']).agg({'data1':'min'})#对data1列,取各组的最小值,名字还是data1
2)按key1分组后,aggregate各组data1的最小值和最大值:
df.groupby(['key1'])['data1'].agg({'min','max'}) ==(推荐使用)df.groupby(['key1']).agg({'data1':['min','max']})
3)可以对groupby的结果更正列名(不推荐用这个,哪怕在后面单独更改列名):
df.groupby(['key1'])['data1'].agg({'a':'min','b':'max'})#这里的'min' 'max'为两个函数名
最新文章
- Sql Server系列:多表连接查询
- LeetCode-Combinations
- 第一零二天上课 PHP TP框架 引入文件路径问题和调用验证码的方式
- 使用pymongo需要手动关闭MongoDB Connection吗?
- Linux下inotify监控文件夹状态,发生变化后触发rsync同步
- xv6中存储cpu和进程信息的技巧
- ubuntu下Eclipse无法启动
- 排序问题思考(要求时间和空间复杂度尽可能的低)【Part 2】
- 精通gulp常用插件
- 好多鱼 Java
- python编程快速上手之第10章实践项目参考答案
- Shader 1:能接受阴影的透明shader
- Python-常用第三方库
- Uva - 400 - Unix ls
- EFCore Lazy Loading + Inheritance = 干净的数据表 (一) 【献给处女座的DB First程序猿】
- DLL加载,设置相对路径
- 虚拟机静态ip设置
- 转:一千行MYSQL 笔记
- 文件管理 - Ring3创建目录
- Confluence 6 空间标识
热门文章
- python+requests----登录接口reponse中token传递给其他接口使用的一个简单小示例介绍
- [ES2019] Use JavaScript ES2019 flatMap to Map and Filter an Array
- js.map文件意义(转)
- PHP mysqli_dump_debug_info() 函数
- OI 常用模板 手写
- Luogu5369 [PKUSC2018]最大前缀和
- 在Android中使用OpenGL ES开发第(四)节:相机预览
- 提交项目到Github
- vscode设置VUE eslint开发环境
- vmware 安装 VMwareTools