首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PySpark :在n个元素上做一个简单的滑动窗口,并通过一个函数聚合

PySpark :在n个元素上做一个简单的滑动窗口,并通过一个函数聚合
EN

Stack Overflow用户
提问于 2020-06-24 08:17:20
回答 1查看 1.1K关注 0票数 0

我知道这个主题已经发表了,但我仍然不理解pyspark中的windows函数。我只想在一个pyspsark数据框架上这样做:data.rolling(5).agg('sum'),->,这是在Pandas中。

我要的是火花源。不需要groupby或orderby,只需在列上滑动窗口并计算sum (或我自己的函数)。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = pd.DataFrame({'A': [1,1,2,2,1,2],
                    'B': [2,2,3,4,2,1]})

print(df)
   A  B
0  1  2
1  1  2
2  2  3
3  2  4
4  1  2
5  2  1

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(df.rolling(3).agg('sum'))
     A    B
0  NaN  NaN
1  NaN  NaN
2  4.0  7.0
3  5.0  9.0
4  5.0  9.0
5  5.0  7.0

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-24 08:52:50

您可以通过创建单个窗口并限制要聚合的行来实现此目的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pyspark.sql import Window
from pyspark.sql.functions import *


df1.show()
+---+---+
| v1| v2|
+---+---+
|  1|  2|
|  1|  4|
|  2|  2|
|  2|  4|
|  2|  4|
|  2|  4|
|  2|  4|
|  2|  4|
+---+---+


w = Window().partitionBy(lit(1)).rowsBetween(-2,0)
df1.select(sum('v1').over(w).alias('v1'),sum('v2').over(w).alias('v2')).show()

+---+---+
| v1| v2|
+---+---+
|  1|  2|
|  2|  6|
|  4|  8|
|  5| 10|
|  6| 10|
|  6| 12|
|  6| 12|
|  6| 12|
+---+---+

如果需要,可以显式设置前两行为null

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62550625

复制
相关文章
警告!别再使用 TIMESTAMP 作为日期字段~
点击上方蓝色字体,选择“设为星标” 回复”学习资料“获取学习宝典 来源:JAVA日知录 在日常数据库设计中,几乎每张业务表都带有一个日期列,用于记录每条记录产生和变更的时间。比如用户表会有一个日期列记录用户注册的时间、用户最后登录的时间。又比如,电商行业中的订单表(核心业务表)会有一个订单产生的时间列,当支付时间超过订单产生的时间,这个订单可能会被系统自动取消。 日期类型虽然常见,但在表结构设计中也容易犯错,比如很多开发同学都倾向使用整型存储日期类型,同时也会忽略不同日期类型对于性能可能存在的潜在影响。
猿天地
2022/03/24
1.1K0
pandas使用技巧-分组统计数据
因为数据是随机生成的,我们需要检查是否有出现这种情况:name、subject、time、grade4个字段相同,但是score出现了两次,防止数据不规范。写了一个循环来进行判断:
皮大大
2021/03/07
2.2K0
使用awk打印文件中的字段和列
Awk 自动将提供给它的输入行划分为字段,一个字段可以定义为一组字符,这些字符通过内部字段分隔符与其他字段分开。 如果你熟悉 Unix/Linux 或者做bash shell 编程,那么你应该知道什么是内部字段分隔符 (IFS) 变量是。Awk 中的默认 IFS 是制表符和空格。 Awk: 遇到输入行时,根据定义的IFS,第一组字符为field one,访问时使用 1,第二组字符是字段二,使用访问 2,第三组字符是字段三,使用访问 为了更好地理解这个 awk 字段编辑,让我们看看下面的例子: Exampl
入门笔记
2022/06/02
10K0
使用关键字作为字段名称
在Oracle 中只能用双引号"包围关键字。但由于Oracle中双引号内的字符串是区分大小写的,而不管创建表还是查询时,Oracle都会把字段名转成全部大写,所以,除非创建表时双引号内的字段名就是全大写的,否则以后查询时SQL语句都必须加双引号,若不加则Oracle内部会把字段名转成全大写从而提示“无效的标识符”。同理,查询普通字段也可以通过加双引号查询得出,但双引号内的字段名必须是全大写,例如SELECT "ANY_FIELD_NAME" FROM TableName 在SQL Server 中可以用方括号[]或双引号"包围关键字。字段名任何情况下都不区分大小写。 在MySQL 中用`(backticks)把表和列名名字围起来。字段名也不区分大小写。 在Hibernate 中必须在定义映射关系时用backticks(`)包围字段名,具体参考这里 或这里 。
用户2657851
2020/03/04
1.6K0
一场pandas与SQL的巅峰大战(二)
上一篇文章一场pandas与SQL的巅峰大战中,我们对比了pandas与SQL常见的一些操作,我们的例子虽然是以MySQL为基础的,但换作其他的数据库软件,也一样适用。工作中除了MySQL,也经常会使用Hive SQL,相比之下,后者有更为强大和丰富的函数。本文将延续上一篇文章的风格和思路,继续对比Pandas与SQL,一方面是对上文的补充,另一方面也继续深入学习一下两种工具。方便起见,本文采用hive环境运行SQL,使用jupyter lab运行pandas。关于hive的安装和配置,我在之前的文章MacOS 下hive的安装与配置提到过,不过仅限于mac版本,供参考,如果你觉得比较困难,可以考虑使用postgreSQL,它比MySQL支持更多的函数(不过代码可能需要进行一定的改动)。而jupyter lab和jupyter notebook功能相同,界面相似,完全可以用notebook代替,我在Jupyter notebook使用技巧大全一文的最后有提到过二者的差别,感兴趣可以点击蓝字阅读。希望本文可以帮助各位读者在工作中进行pandas和Hive SQL的快速转换。本文涉及的部分hive 函数我在之前也有总结过,可以参考常用Hive函数的学习和总结。
超哥的杂货铺
2019/12/18
2.3K0
一场pandas与SQL的巅峰大战(二)
GridView添加新列并绑定控件
4、创建控件事件(不能是click事件,关联字段触发的事件要创建Command事件)
用针戳左手中指指头
2021/01/29
1.1K0
GridView添加新列并绑定控件
Oracle列转行函数LISTAGG() WITHIN GROUP ()的使用方法
前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!
全栈程序员站长
2022/11/01
5.4K0
Oracle列转行函数LISTAGG() WITHIN GROUP ()的使用方法
pandas’_pandas 删除列
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/02
2.7K0
pandas’_pandas 删除列
第11课 使用子查询使用计算字段作为子查询
我们考虑一个问题,列出订购物品‘RGAN01’的所有顾客的信息,那我们应该用怎样的信息检索?
desperate633
2018/08/22
1.4K0
从Excel到Python:最常用的36个Pandas函数
本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入、数据清洗、预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作。
统计学家
2019/12/05
11.5K0
从Excel到Python:最常用的36个Pandas函数
Excel与pandas:使用applymap()创建复杂的计算列
我们之前讨论了如何在pandas中创建计算列,并讲解了一些简单的示例。通过将表达式赋值给一个新列(例如df['new column']=expression),可以在大多数情况下轻松创建计算列。然而,有时我们需要创建相当复杂的计算列,这就是本文要讲解的内容。
fanjy
2022/11/16
3.9K0
Excel与pandas:使用applymap()创建复杂的计算列
MySQL存储日志并使用Loganalyzer作为前端展示
为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主机服务的状态和所作出的操作,我们可以在较大型的网络架构中使用ELK来实现对日志的收集、检索、前端显示,但是中小型架构中使用rsyslog足以对所有服务器的日志进行收集和检索来达到实时分析数据流量的目的。 本文目标 使用rsyslog将两台主机的日志信息存储到MySQL数据库中,并且编译安装Loganalyzer对MySQL中的日志信息使用httpd+php在前端进行展示。 实验拓扑图 实验环境 主机名
小小科
2018/05/04
1K0
Excel: 对单元格区域中不重复的数字计数
文章背景: 工作中,有时需要计算某一单元区域内不重复数字的个数。可以借助COUNTA和UNIQUE函数完成这一需求。下面介绍两种场景。
Exploring
2023/08/17
2.9K0
Excel:  对单元格区域中不重复的数字计数
pandas用法-全网最详细教程
各位读者朋友们,由于更新blog不易,如果觉得这篇blog对你有用的话,麻烦关注,点赞,收藏一下哈,十分感谢。
全栈程序员站长
2022/07/01
7.4K1
pandas用法-全网最详细教程
python 使用pandas对csv文件进行排序
背景:使用jmeter的插件PerfMon生成的结果数据,需要获取到cpu的TOP 10.
小白will
2019/01/28
8K0
python df 列替换_如何用Python做数据分析,没有比这篇文章更详细的了(图文详情)...
如果你平常做数据分析用 Excel,想要用 Python 做还不太会?那这篇系统的文章一定能帮到你!建议先收藏后食用
用户7886150
2020/12/26
4.5K0
group by 多个字段
众所周知,group by 一个字段是根据这个字段进行分组,那么group by 多个字段的结果是什么呢?由前面的结论类比可以得到,group by 后跟多个子段就是根据多个字段进行分组 注:下面的例子是在网上找到的,仅供参考:
lin_zone
2018/10/10
7.3K0
mysql虚拟列(Generated Columns)及JSON字段类型的使用
mysql 5.7中有很多新的特性,但平时可能很少用到,这里列举2个实用的功能:虚拟列及json字段类型
菩提树下的杨过
2020/04/01
4.6K0
mysql虚拟列(Generated Columns)及JSON字段类型的使用
"Python替代Excel Vba"系列(三):pandas处理不规范数据
本系列前2篇已经稍微展示了 python 在数据处理方面的强大能力,这主要得益于 pandas 包的各种灵活处理方式。
咋咋
2021/09/01
5K0
"Python替代Excel Vba"系列(三):pandas处理不规范数据
点击加载更多

相似问题

pandas对多个列进行分组,并选择新数据帧中group by使用的所有列

112

Pandas计数器作为新列

115

Pandas:获取列值的计数并创建新列

12

如何使用python pandas对列进行分组并对条件值进行计数?

31

使用现有列和字典作为Pandas新列

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文