0
00000000000
当当前行等于1时,我想删除当前行x个月内的所有行(基于日期的前后)。
。给定这个PySpark df:
在您的情况下,rangeBetween
可能非常有用。它关注值,只取在范围内的值。例如,rangeBetween(-2, 2)
将取从2以下到2以上的所有值。由于rangeBetween
不与日期(或字符串)一起工作,我使用months_between
将它们转换为整数。
from pyspark.sql import functions as F, Window
df = spark.createDataFrame(
[('a', '2020-01-01', 0),
('a', '2020-02-01', 0),
('a', '2020-03-01', 0),
('a', '2020-04-01', 1),
('a', '2020-05-01', 0),
('a', '2020-06-01', 0),
('a', '2020-07-01', 0),
('a', '2020-08-01', 0),
('a', '2020-09-01', 0),
('a', '2020-10-01', 1),
('a', '2020-11-01', 0),
('b', '2020-01-01', 0),
('b', '2020-02-01', 0),
('b', '2020-03-01', 0),
('b', '2020-05-01', 1)],
['id', 'date', 'target']
)
window = 2
windowSpec = Window.partitionBy('id').orderBy(F.months_between('date', F.lit('1970-01-01'))).rangeBetween(-window, window)
df = df.withColumn('to_remove', F.sum('target').over(windowSpec) - F.col('target'))
df = df.where(F.col('to_remove') == 0).drop('to_remove')
df.show()
# +---+----------+------+
# | id| date|target|
# +---+----------+------+
# | a|2020-01-01| 0|
# | a|2020-04-01| 1|
# | a|2020-07-01| 0|
# | a|2020-10-01| 1|
# | b|2020-01-01| 0|
# | b|2020-02-01| 0|
# | b|2020-05-01| 1|
# +---+----------+------+
相关内容
- EF Core 3.1 PostgreSQL LEAD窗口函数
- 在BigQuery窗口函数的Partition部分使用别名?
- bigquery窗口函数对其他列范围内的值求和
- SQL RANK()窗口函数
- 确保熊猫滚动窗口函数的窗口大小不变
- 查找连接表的最后一行的SQL窗口函数
- SQL Server或Pandas按分区对窗口函数进行排序/编号
- SQL SUM()窗口函数
- 窗口函数需要分组,但为什么?
- Grafana, postgresql:聚合函数调用不能包含窗口函数调用
- 获取snowflake中row_number()窗口函数的最后两行
- SQLite窗口函数:当没有足够的窗口大小时给出NULL结果
- 我想按分区窗口函数对cat_id进行分组
- 如何在全局范围内设置allow实验窗口函数=1
- 窗口函数查找String中的差异
- PySpark窗口函数-从当前行开始的n个月内
- PostgreSQL row_number()窗口函数,每次更改从1开始计数
- 使用窗口函数添加,从特定值开始
- Spark 窗口函数:筛选出开始日期和结束日期在另一行开始和结束日期范围内的行
- Apache Flink:窗口函数和时间的开始
最新更新
- 错误:未能将一些参考推入' path '
- 我如何让matplotlib正确格式化这些datetime64对象?
- 如何删除重复的行基于多列值在亚马逊雅典娜?
- 无法"npm install"项目
- Applescript在文件夹中搜索带有关键字的照片
- 在CocoaPods任务中运行管道时出错
- 我是如何设法在通常的 conf 设置之外定义一个 XAMPP Apache 额外目录的?找不到证据
- 我的主要分支是错误的,我想用另一个分支重写它,我怎么能做这样的事情?
- 防止在for循环中展开的函数的形参中展开变量
- 自动伸缩组实例未在ALB上注册
- 我有一个问题与基础SQLITE3,如何解决它?
- react useEffect(): Hello只记录一次
- ViewBinding within Broadcast Receiver
- 为什么x输入事件不再被Tk事件回调处理(Ubuntu 22.04, Tk 8.6.12)?
- 如何降低MSAA内存使用率?
- Apache Flink -匹配具有相同值的字段
- 如何在jquery中添加?
- 如何在AVAudioPCMBuffer上做偏移?
- 定义函数以返回类的属性需要什么?
- Php对象组数组
- 如何用Angular/Javascript创建工作流图
- 颤镖"unconditionally accessed because the receiver can be 'null'."问题
- 无法从'pydantic'(未知位置)导入名称'BaseModel'
- 处理多个实例上的websocket连接
- r语言 - 如何使用随机生成的数据对ridge/lasso回归进行交叉验证?
- Julia通过关键字参数的数量来识别方法
- Firebase 函数部署失败,并出现"缺少"依赖项错误
- 使用通配符复制文件 * 为什么它不起作用?
- c语言 - 如果我只在以"rb"模式打开的文件的情况下使用它,将 fgetc() 结果转换为 short 是否安全?
- 增加lambda函数中的值
热门标签:
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