Pandas apply transform agg 函数区别

本文详细比较了PandasDataFrame中的apply、transform和agg函数,阐述了它们的用途和行为差异,通过实例演示了如何运用这些函数进行数据处理。
摘要由CSDN通过智能技术生成
  1. apply 传入的为DataFrame,transform和agg传入的为Series。

  2. 可通过打印传入的参数,进行本质比较,DF和Series可做的操作不同;如列相加只能DF。

  3. transform返回值其索引和列与原始DataFrame相同,agg必为聚会结果及组数,apply看具体应用函数的行为即可能为与原大小一样,也可能为聚合后的即只有组数。

  • apply举例,传入DF,即可返回聚合大小,也可返回原大小。

  • import pandas as pd
    
    data = {
        'user_id': [1, 2, 3, 4, 5, 6],
        '渠道': ['Alipay', 'WeiChat', 'Alipay', 'WeiChat', 'Alipay', 'WeiChat'],
        '金额': [100, 150, 120, 180, 90, 200]
    }
    
    df = pd.DataFrame(data)
    
    def convert(item):
        print(item)
        print('*'*50)
        return item.max()
    
    df2 = df.groupby(['渠道']).apply(convert)
    print(df2)
    '''output
       user_id      渠道   金额
    0        1  Alipay  100
    2        3  Alipay  120
    4        5  Alipay   90
    **************************************************
       user_id       渠道   金额
    1        2  WeiChat  150
    3        4  WeiChat  180
    5        6  WeiChat  200
    **************************************************
             user_id       渠道   金额
    渠道                            
    Alipay         5   Alipay  120
    WeiChat        6  WeiChat  200
    
    '''
  • import pandas as pd
    
    data = {
        'user_id': [1, 2, 3, 4, 5, 6],
        '渠道': ['Alipay', 'WeiChat', 'Alipay', 'WeiChat', 'Alipay', 'WeiChat'],
        '金额': [100, 150, 120, 180, 90, 200]
    }
    
    df = pd.DataFrame(data)
    
    def convert(item):
        print(item)
        print('*'*50)
        return item
    
    df2 = df.groupby(['渠道']).apply(convert)
    print(df2)
    '''output
       user_id      渠道   金额
    0        1  Alipay  100
    2        3  Alipay  120
    4        5  Alipay   90
    **************************************************
       user_id       渠道   金额
    1        2  WeiChat  150
    3        4  WeiChat  180
    5        6  WeiChat  200
    **************************************************
       user_id       渠道   金额
    0        1   Alipay  100
    1        2  WeiChat  150
    2        3   Alipay  120
    3        4  WeiChat  180
    4        5   Alipay   90
    5        6  WeiChat  200
    '''
  • agg举例 传入Series,返回聚合大小。

  • import pandas as pd
    
    data = {
        'user_id': [1, 2, 3, 4, 5, 6],
        '渠道': ['Alipay', 'WeiChat', 'Alipay', 'WeiChat', 'Alipay', 'WeiChat'],
        '金额': [100, 150, 120, 180, 90, 200]
    }
    
    df = pd.DataFrame(data)
    
    def convert(item):
        print(item)
        print('*'*50)
        return item.max()
    
    df2 = df.groupby(['渠道']).agg(convert)
    print(df2)
    '''ouotput
    0    1
    2    3
    4    5
    Name: user_id, dtype: int64
    **************************************************
    1    2
    3    4
    5    6
    Name: user_id, dtype: int64
    **************************************************
    0    100
    2    120
    4     90
    Name: 金额, dtype: int64
    **************************************************
    1    150
    3    180
    5    200
    Name: 金额, dtype: int64
    **************************************************
             user_id   金额
    渠道                   
    Alipay         5  120
    WeiChat        6  200
    '''
  • transform举例 传入Series,返回原大小

  • import pandas as pd
    
    data = {
        'user_id': [1, 2, 3, 4, 5, 6],
        '渠道': ['Alipay', 'WeiChat', 'Alipay', 'WeiChat', 'Alipay', 'WeiChat'],
        '金额': [100, 150, 120, 180, 90, 200]
    }
    
    df = pd.DataFrame(data)
    
    def convert(item):
        print(item)
        print('*'*50)
        return item.max()
    
    df2 = df.groupby(['渠道']).transform(convert)
    print(df2)
    '''output
    0    1
    2    3
    4    5
    Name: user_id, dtype: int64
    **************************************************
    0    100
    2    120
    4     90
    Name: 金额, dtype: int64
    **************************************************
       user_id   金额
    0        1  100
    2        3  120
    4        5   90
    **************************************************
    1    2
    3    4
    5    6
    Name: user_id, dtype: int64
    **************************************************
    1    150
    3    180
    5    200
    Name: 金额, dtype: int64
    **************************************************
       user_id   金额
    0        5  120
    1        6  200
    2        5  120
    3        6  200
    4        5  120
    5        6  200
    '''

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值