pyspark之dataframe当前行与上一行值求差

from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import functions as F
from pyspark.sql.window import Windowsc = SparkContext(appName="PrevRowDiffApp")
sqlc = SQLContext(sc)rdd = sc.parallelize([(1, 65), (2, 66), (3, 65), (4, 68), (5, 71)])df = sqlc.createDataFrame(rdd, ["id", "value"])my_window = Window.partitionBy().orderBy("id")df = df.withColumn("prev_value", F.lag(df.value).over(my_window))
df = df.withColumn("diff", F.when(F.isnull(df.value - df.prev_value), 0).otherwise(df.value - df.prev_value))df.show()
+---+-----+----------+----+
| id|value|prev_value|diff|
+---+-----+----------+----+
|  1|   65|      null|   0|
|  2|   66|        65|   1|
|  3|   65|        66|  -1|
|  4|   68|        65|   3|
|  5|   71|        68|   3|
+---+-----+----------+----+

参考:https://www.arundhaj.com/blog/calculate-difference-with-previous-row-in-pyspark.html

https://www.jianshu.com/p/55efdcabd163

pyspark之dataframe当前行与上一行值求差相关推荐

  1. 当前行取上一行或者下一行数据作为独立列

    当前行取上一行或者下一行数据作为独立列 Lead over 函数可以获取当前行的后第N行作为独立列 Lag over 函数可以获取当前行的前第N行作为独立列 注 : orcle才有上两个函数 , my ...

  2. python dataframe切片_python-如何避免“试图在DataFrame的切片副本上设置值”?

    我有一个数据框df_original: a b 0 10 5 1 12 6 2 14 1 现在,我想制作一个包含所有行的新数据框,其中c> 5,然后在此新数据帧上设置新的列值: df = df_ ...

  3. R语言使用Hmisc包的impute函数填充dataframe数据中特定数据列中的缺失值、将空值null用上一行和下一行值的平均值填充

    R语言使用Hmisc包的impute函数填充dataframe数据中特定数据列中的缺失值.将空值null用上一行和下一行值的平均值填充 目录

  4. pySpark创建DataFrame的方式

    pySpark创建DataFrame的方式 有时候需要在迭代的过程中将多个dataframe进行合并(union),这时候需要一个空的初始dataframe.创建空dataframe可以通过spark ...

  5. c++怎么取消换行或回到上一行

    在 C 语言中,可以使用转义字符来取消换行或回到上一行. 如果要在输出语句中取消换行,可以使用转义字符 \ 来在末尾输出一个不换行的字符,例如: printf("这是第一行\t这是第二行&q ...

  6. Pyspark 读 DataFrame 的使用与基本操作

    一.安装 基于 mac 操作系统 安装 jdk jdk 下载地址 安装 pyspark pip install pyspark 二.读取 HDFS 文件 读 json 注意,如果是多行的 json,需 ...

  7. 致远OA表单自定义函数(取上一行金额)

    需求探讨 前期,在我开始分享自定义函数时,有同事就建议小编研究一下取重复表上一行金额的自定义函数. 解决办法:主表中控件取出明细表金额数组,然后利用当前行的行号计算出上一行的行号,最后查找数组中对应行 ...

  8. c语言中空行作用,用C语言删除空行(上一行)。

    满意答案 winters74 2017.03.31 采纳率:42%    等级:11 已帮助:1125人 #include #include //for function exit() #includ ...

  9. python dataframe取某行某列_pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列...

    重点: dataframe.apply(function,axis)对一行或一列做出一些操作(axis=1则为对某一列进行操作,此时,apply函数每次将dataframe的一行传给function, ...

最新文章

  1. php下扩展php_curl.dll的安装
  2. linux运维常用命令
  3. 在下列计算机应用项目中,属于过程控制应用领域的是,计算机基础试题.ppt
  4. [转]暴牛!全国女生录用老公统一考试试卷
  5. jQuery.fn.load调用时给url加selector之后执行脚本的方法
  6. python字符串匹配的准确率_说说在 Python 中,如何找出所有字符串匹配
  7. markdown与word相互转换的快捷方法
  8. WinForm(一) WinForm入门与基本控件使用
  9. 【服务器】服务器运维必备软件;服务器安装环境、运维教程
  10. 云计算发展现状及未来趋势
  11. 一文说明白ECDSA spec256k1 spec256r1 EdDSA ed25519千丝万缕的关系
  12. 计算机的操作系统的功能有哪些,操作系统的主要功能是主要有哪些类型
  13. fastjson之@JSONField注解的几个的使用详细示范
  14. C#学习笔记004——生成(创建)文本文件
  15. Davinci数据可视化-新增图表类型-旭日图
  16. ESXI ssh 登录
  17. 机器学习中训练的模型,通俗理解
  18. 织梦php 文章采集规则,dedecms采集怎么用
  19. echart 人物关系图添加照片
  20. Spring框架中IOC和DI的区别

热门文章

  1. PyQt5中的lambda表达式的使用
  2. python量化投资代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...
  3. python合并视频和音频_FFMpeg无损合并视频的多种方法 python | 猴头客
  4. 文本处理工具及正则表达式
  5. react生命周期总结
  6. 购买抖币显示苹果服务器异常,抖音刷礼物为什么显示当前设备不支持苹果应用内支付?...
  7. 苹果电脑系统怎么重装?这几步就可以轻松搞定
  8. Gingko Framework:session的使用
  9. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...
  10. Jove:@AlanCui 在手机上用QQ或GTalk来贴Fanfou吧, 不用敲空格或省略号. 好像你输入多少个中文字符就要补多少个空格...