Pandas groupby apply agg 区别 运行自定义函数

简介:

agg 方法将一个函数使用在一个数列上,然后返回一个标量的值。也就是说agg每次传入的是一列数据,对其聚合后返回标量。 
对一列使用三个函数: 
这里写图片描述
对不同列使用不同函数 
这里写图片描述
apply 是一个更一般化的方法:将一个数据分拆-应用-汇总。而apply会将当前分组后的数据一起传入,可以返回多维数据。 
这里写图片描述
图片来自 
实例: 
1、数据如下:

lawsuit2[['EID','LAWAMOUNT','LAWDATE']]
  • 1

这里写图片描述 
2、groupby后应用apply传入函数数据如下:

lawsuit2[['EID','LAWAMOUNT','LAWDATE']].groupby(['EID']).apply(lambda df:print(df))
  • 1

这里写图片描述
3、如果使用agg,对于两列可以处理,但对于上面的三列,打印数据如下:

lawsuit2[['EID','LAWAMOUNT','LAWDATE']].groupby(['EID']).agg(lambda df:print(df))
  • 1

这里写图片描述
可以看到agg传入的只有一列数据,如果我们使用df加列下表强行取值也能取到,但是有时会出现各种keyError问题。 
4、完整代码: 
判断最近一次日期的花费是否是所有的花费中最大花费。

def handle(df):
#     print(df)
# 找最大日期
    maxdate = df['LAWDATE'].max()
# 找最大费用
    left = df[ df['LAWDATE']==maxdate ]['LAWAMOUNT'].max()
# 取ID
    EID = df['EID'].values[0]
#     print(EID)
# 从已存在的表中根据EID找到最大费用
    right = LAW_AMOUNT_MAX.loc[EID,'LAW_AMOUNT_MAX']
# 判断费用是否相等
    if left==right:
        return 1
    else:
        return 0

LAW_AMOUNT_MAX_IS_LAST = lawsuit2[['EID','LAWAMOUNT','LAWDATE']].groupby(['EID']).apply(handle)

转自:http://blog.csdn.net/qq_16234613/article/details/78245325
目录
相关文章
|
24天前
|
SQL 数据挖掘 数据处理
不再纠结,一文详解pandas中的map、apply、applymap、groupby、agg...
不再纠结,一文详解pandas中的map、apply、applymap、groupby、agg...
|
3月前
|
Python
pandas中groupby和shift结合实现相邻行的计算
pandas中groupby和shift结合实现相邻行的计算
38 0
|
4月前
|
NoSQL Serverless Python
在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。
【5月更文挑战第2天】在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。方法一是直接赋值,如`df['C'] = 0`,创建新列C并初始化为0。方法二是应用函数,例如定义`add_column`函数计算A列和B列之和,然后使用`df.apply(add_column, axis=1)`,使C列存储每行A、B列的和。
223 0
|
4月前
|
数据挖掘 数据处理 Python
Pandas 高级教程——自定义函数与映射
Pandas 高级教程——自定义函数与映射
84 0
|
11月前
|
存储 并行计算 数据挖掘
【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能
【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能
99 2
|
10月前
|
数据可视化 数据挖掘 Python
python pandas 宝可梦数据分析可视化实战 课程设计 完整代码+数据 可直接运行
python pandas 宝可梦数据分析可视化实战 课程设计 完整代码+数据 可直接运行
81 0
|
索引 Python
pandas中set_index、reset_index区别
pandas中set_index、reset_index区别
131 0
|
数据处理 索引 Python
Python 之 Pandas 处理字符串和apply() 函数、applymap() 函数、map() 函数详解
Python 之 Pandas 处理字符串和apply() 函数、applymap() 函数、map() 函数详解
|
2月前
|
数据挖掘 Python
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
126 0
|
9天前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化