假设我有一个这样的表
您可以使用窗口函数,按id
划分,按date
排序。
from pyspark.sql import functions as F
from pyspark.sql import Window
df = spark.createDataFrame(
[(1, '01/04', 7),
(1, '01/03', 2),
(1, '01/02', 10),
(1, '01/01', 4),
(2, '01/04', 7),
(2, '01/03', 7),
(2, '01/02', 8),
(2, '01/01', 5)],
['id', 'date', 'value']
)
df.createOrReplaceTempView('sample_data')
PySpark (dataframe API)
w = Window().partitionBy('id').orderBy('date').rowsBetween(-2, -1)
df = df.withColumn('avg', F.avg('value').over(w))
df.orderBy(F.col('id').asc(), F.col('date').desc()).show()
+---+-----+-----+----+
| id| date|value| avg|
+---+-----+-----+----+
| 1|01/04| 7| 6.0|
| 1|01/03| 2| 7.0|
| 1|01/02| 10| 4.0|
| 1|01/01| 4|null|
| 2|01/04| 7| 7.5|
| 2|01/03| 7| 6.5|
| 2|01/02| 8| 5.0|
| 2|01/01| 5|null|
+---+-----+-----+----+
SQLspark.sql(
'''
SELECT
id,
date,
value,
AVG(value) OVER (PARTITION BY id ORDER BY date ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING) AS avg
FROM sample_data
ORDER BY id, date DESC
''').show()
+---+-----+-----+----+
| id| date|value| avg|
+---+-----+-----+----+
| 1|01/04| 7| 6.0|
| 1|01/03| 2| 7.0|
| 1|01/02| 10| 4.0|
| 1|01/01| 4|null|
| 2|01/04| 7| 7.5|
| 2|01/03| 7| 6.5|
| 2|01/02| 8| 5.0|
| 2|01/01| 5|null|
+---+-----+-----+----+
相关内容
- 存档和压缩一组非常相似的png图像
- 什么是最简单的Spring Kafka@KafkaListener配置来消耗一组压缩主题中的所有记录
- 是否可以将一组HTML文档(包括所有链接)压缩为一个PDF、电子书等
- 我正在尝试在 PHP 中压缩一个数组
- 将一组给定的文件解压缩到存储库
- 如何创建一组集合(18 个集合,每组 5 个单独的整数,全部压缩在一个集合中)
- 当用Libx264压缩一组图像时,为什么帧速率会影响最终输出尺寸
- 有没有一种简单的pythonic方法可以在解压缩元组时增加变量
- 通过迭代 Haskell 中 PK 压缩存档中的一组文件来提取行
- 用预定义的霍夫曼表压缩一组文本文件是一个好主意
- 如何在c#中优化并快速压缩一组集合
- 压缩一组大整数
- Rails Zipfile在使用rubyzip压缩Heroku(Cedar)上tmp中的一组mp3文件时损坏
- 尝试在(.zip/.rar)上设置一组密码,以使用.bat解压缩文件
- 如何在一组压缩包中找到一个特定文件
- 如何压缩一组存储在 python 列表中的列表
- Bash:维护一组文件及其压缩等效文件
- 解压缩一组图像时出错
- 如何压缩一组唯一自然数,并比较两个这样的集合
- 从appengine数据存储压缩一组Blob
最新更新
- Python记录器没有从根记录器继承level
- 是什么导致了python的f字符串中"f "{a}""与"f "{a=}""之间的差异?
- 标题库使用介子
- 打印偶数的"count",而循环使用 if
- 为什么我要将数组转换为对象
- 通过共享操作符将可连接的Flux转换为Hot不工作
- 从演示文稿中删除所有空的/未使用的形状
- 破坏错误取决于变量的顺序
- c -试图编写一个MIPS汇编程序
- 消息队列推送通知/邮件应用程序?
- 如何在根目录下安装gitignore
- 我应该如何测试一个API调用拒绝是在一个上下文中?
- 百分比值到绝对值,反之亦然,由于整数四舍五入,转换导致不匹配
- 由于 NBM 的原因,我无法在 NetBeans 中下载代号一插件
- 如何组织项目与多个Go模块和使用Docker撰写?
- 蓝牙BLE设备配对后未绑定
- 为什么我在 Django 中显示用户配置文件的代码不起作用?
- 使用api平台图形查询读取空间点类型
- 如何处理嵌套角色中超出范围的变量
- std::vector and move semantics
- ImageMagick多个命令,带有不同的源和目标文件夹和文件
- 是否有一个特定的键进入一个字符和退出插入模式在vim vscode扩展?
- c - NULL值在运行时被重新分配给垃圾
- 我如何将这个python函数转换为c++?
- 我可以用pybliometrics找到论文的通讯作者是谁,以及他们的电子邮件地址吗?
- 了解如何在Ruby on Rails中使用Turbo
- 解码mediaRecorder音频文件在Python中
- 节点/反应:我无法使用 multer 上传带有我的帖子的图像
- Texture.loadFromFile 无法按预期工作
- 如何使用Url_Launcher的inAppWebView作为小部件
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium