文章目录

  • 关于pyspark分组后遍历分组后的数据参考这篇文章:
  • pyspark分组后如下,在pandas里分组后,每一个小df就是如下的每一行
  • 将pyspark分组后的数据,即每一行,转成pandas的df:
  • 汇总关键代码

关于pyspark分组后遍历分组后的数据参考这篇文章:

https://blog.csdn.net/qq_42363032/article/details/118298108

pyspark分组后如下,在pandas里分组后,每一个小df就是如下的每一行

data = ss.createDataFrame(data)da_gb = data.groupby('alpos_id').agg(fn.collect_list('impressions').alias('impressions_list'),fn.collect_list('ecpm').alias('ecpm_list')
)da_gb.show()

将pyspark分组后的数据,即每一行,转成pandas的df:

def row_dealwith(data):ids = list(data.keys())[0]      # 获取分组idvalues = data.get(ids)          # 获取分组后的字段值lens = len(values)# print(ids, values[0], values[1])# 构造idids_li = []for i in range(len(values[0])):ids_li.append(ids)# 横向分组转为纵向分组zdict = {}zlis = []zdict['alpos_id'] = ids_lifor i in range(lens):zdict[i] = values[i]print(zdict)da_gb = pd.DataFrame(zdict)print(da_gb)
dardds = da_gb.rdd.map(lambda data: ({data.alpos_id: [data.impressions_list, data.ecpm_list]}))dardds.foreach(row_dealwith)
'''
out:{'alpos_id': ['0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930', '0_2011082923279930'], 0: [222.0, 2269.0, 212.0, 43.0, 29.0, 172.0, 192.0, 232.0, 288.0, 306.0, 328.0], 1: [14.4595, 14.0899, 14.3868, 12.5581, 12.069, 30.814, 14.1667, 12.6293, 15.5556, 8.5948, 11.2805]}{'alpos_id': ['0_3001461399082077', '0_3001461399082077', '0_3001461399082077', '0_3001461399082077', '0_3001461399082077', '0_3001461399082077', '0_3001461399082077', '0_3001461399082077', '0_3001461399082077'], 0: [0.2, 0.0, 0.142857142857142, 0.0, 0.181818181818181, 0.3, 0.3125, 0.0, 0.0], 1: [43.6990133333333, 40.1434533333333, 41.21348, 34.8579266666666, 35.2619666666666, 35.6953, 44.22308, 44.4453, 44.18604]}{'alpos_id': ['0_3071297379437968'], 0: [8.0], 1: [73.75]}{'alpos_id': ['0_3031798112278383', '0_3031798112278383', '0_3031798112278383', '0_3031798112278383'], 0: [4.0, 62.0, 58.0, 4.0], 1: [2.5, 6.9355, 9.3103, 5.0]}
'''

汇总关键代码

def row_dealwith(data):ids = list(data.keys())[0]      # 获取分组idvalues = data.get(ids)          # 获取分组后的字段值lens = len(values)# print(ids, values[0], values[1])# 构造idids_li = []for i in range(len(values[0])):ids_li.append(ids)# 横向分组转为纵向分组zdict = {}zlis = []zdict['alpos_id'] = ids_lifor i in range(lens):zdict[i] = values[i]print(zdict)da_gb = pd.DataFrame(zdict)print(da_gb)def pyspark_gb(data):data = ss.createDataFrame(data)da_gb = data.groupby('alpos_id').agg(fn.collect_list('impressions').alias('impressions_list'),fn.collect_list('ecpm').alias('ecpm_list'))da_gb.show()dardds = da_gb.rdd.map(lambda data: ({data.alpos_id: [data.impressions_list, data.ecpm_list]}))# print(type(sss))            # pyspark.rdd.PipelinedRDD# print(sss.take(5))# sss.foreach(lambda x: print(x))dardds.foreach(row_dealwith)

pyspark groupby 后将遍历的每一行转成pandas df相关推荐

  1. pandas用groupby后对层级索引levels的处理

    层及索引levels,刚开始学习pandas的时候没有太多的操作关于groupby,仅仅是简单的count.sum.size等等,没有更深入的利用groupby后的数据进行处理.近来数据处理的时候有遇 ...

  2. 给定二叉树先序、中序遍历序列,求后序遍历

    给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列. 输入描述: 输入为一行. 两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔.保证数据合法 输出描述: 对应输 ...

  3. 2010 求后序遍历

    2010 求后序遍历  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 白银 Silver 题目描述 Description 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列 ...

  4. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1339:【例3-4】求后序遍历

    时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1380 通过数: 940 [题目描述] 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列. [输入] 共两行,第一行一个字符 ...

  5. LeetCode——树:层次遍历、前中后序遍历

    LeetCode--树:层次遍历.前中后序遍历 目录 层次遍历 二叉树的层平均值 找树左下角的值 前中后序遍历 概述 非递归实现二叉树的前序遍历 非递归实现二叉树的中序遍历 非递归实现二叉树的后序遍历 ...

  6. 【例3-4】求后序遍历

    [例3-4]求后序遍历 链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1339 时间限制: 1000 ms         内存限制: 65536 ...

  7. 求后序遍历(信息学奥赛一本通-T1339)

    [题目描述] 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列. [输入] 共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历.树的结点一律用小写字母表示. [输出] ...

  8. PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...

    L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤),是二叉树中结点的个 ...

  9. 【2020团体程序设计天梯赛】L2-3 完全二叉树的层序遍历(后序遍历转层次遍历)

    problem 7-11 完全二叉树的层序遍历 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的 ...

  10. groupby后选取列和不选取列的区别

    1.首先通过groupby得到DataFrameGroupBy对象, 比如df.groupby('flee') 2.然后选择需要研究的列, 比如['age'], 这样我们就得到了一个SeriesGro ...

最新文章

  1. 【原创】Github团队协作之Pull请求
  2. templateref html内容,angular之ng-template模板加载
  3. python要不要装pycharm-subli(python要不要装pycharm)
  4. python树莓派设备_Python+树莓派制作IoT(物联网)门控设备
  5. Salem and Sticks
  6. centos 编译mysql5.6_centos下编译安装MySQL5.6
  7. [机器学习笔记]Note9--机器学习系统设计
  8. 51单片机之工作周期与时序
  9. apache 配置 中英
  10. 远程控制软件用户群分析
  11. shutil模块拷贝与解压缩模块----day19
  12. verilog实现格雷码与二进制码的互换
  13. 【毕设】知网文献检索列表中的 href 解析为可访问的 URL
  14. 搭配-最全的配色方案和色彩搭配
  15. u盘装华为服务器系统教程,华为服务器u盘重装系统
  16. 【工具分享】任意坐标系CAD范围线多点配准及准确导入导入LSV
  17. 【SDU项目实训2019级】前端和后端实现手机短信验证码登录和注册功能
  18. 交叉编译器 arm-linux-gnueabi,arm-linux-gnueabihf,arm-none-linux等的区别
  19. 小强升职记梗概_《小强升职记》读书笔记一
  20. 计算机对商务英语的不利之处,商务英语教学中计算机网络利弊分析论文.docx

热门文章

  1. excel如何输入身份证号码
  2. Word文档中对号以及对号外加方框的输入教程
  3. 3000计算机组装电脑,电脑组装教程,教您组装电脑配置清单
  4. 零基础小白入行3D建模,首先!你要了解什么叫建模!
  5. 计算机毕业设计Java优乐帮育儿系统(系统+程序+mysql数据库+Lw文档)
  6. matlab 开普勒方程,第二章 开普勒方程.ppt
  7. 游戏服务器架构,配置
  8. IELTS-writing exercise Expository_Text_18
  9. 2048游戏的核心运算
  10. 《HelloGitHub》第 67 期