pyspark:重复项的删除量大于值

问题描述

我下面有一个数据框:

enter image description here

我想根据流程和工位显示以下行

enter image description here

解决方法

尝试使用 split 获取代码值,然后使用expr过滤记录。

Example:

df.show()
#+------+-------+-------+--------+
#|  code|process|station|sequence|
#+------+-------+-------+--------+
#|CODE-1|     ab|     ab|       1|
#|CODE-1|     ab|     xy|       2|
#|CODE-1|     ab|     op|       3|
#|CODE-1|     ab|     ac|       4|
#|CODE-2|     xy|     ab|       1|
#|CODE-2|     xy|     xy|       2|
#|CODE-2|     xy|     op|       3|
#|CODE-2|     xy|     ac|       4|
#|CODE-3|     op|     ab|       1|
#|CODE-3|     op|     xy|       2|
#|CODE-3|     op|     op|       3|
#|CODE-3|     op|     ac|       4|
#|CODE-4|     ac|     ab|       1|
#|CODE-4|     ac|     xy|       2|
#|CODE-4|     ac|     op|       3|
#|CODE-4|     ac|     ac|       4|
#+------+-------+-------+--------+

from pyspark.sql.functions import *

df.withColumn("tmp",split(col("code"),"-")[1]).\
filter(expr('sequence >= tmp')).\
drop(*["tmp"]).\
show()
#+------+-------+-------+--------+
#|  code|process|station|sequence|
#+------+-------+-------+--------+
#|CODE-1|     ab|     ab|       1|
#|CODE-1|     ab|     xy|       2|
#|CODE-1|     ab|     op|       3|
#|CODE-1|     ab|     ac|       4|
#|CODE-2|     xy|     xy|       2|
#|CODE-2|     xy|     op|       3|
#|CODE-2|     xy|     ac|       4|
#|CODE-3|     op|     op|       3|
#|CODE-3|     op|     ac|       4|
#|CODE-4|     ac|     ac|       4|
#+------+-------+-------+--------+

Option-2:

使用 df.replace() ,然后使用expr进行过滤。

replace_dict={"ab":"1","xy":"2","op":"3","ac":"4"}

df.withColumn("tmp",col("process")).\
replace(replace_dict,subset='tmp').\
filter(expr('sequence >= tmp')).\
drop(*["tmp"]).\
show()

#+------+-------+-------+--------+
#|  code|process|station|sequence|
#+------+-------+-------+--------+
#|CODE-1|     ab|     ab|       1|
#|CODE-1|     ab|     xy|       2|
#|CODE-1|     ab|     op|       3|
#|CODE-1|     ab|     ac|       4|
#|CODE-2|     xy|     xy|       2|
#|CODE-2|     xy|     op|       3|
#|CODE-2|     xy|     ac|       4|
#|CODE-3|     op|     op|       3|
#|CODE-3|     op|     ac|       4|
#|CODE-4|     ac|     ac|       4|
#+------+-------+-------+--------+

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...