从字符串 PySpark 数据框列中删除正则表达式
Posted
技术标签:
【中文标题】从字符串 PySpark 数据框列中删除正则表达式【英文标题】:Remove Regex from string PySpark Dataframe Column 【发布时间】:2018-01-11 13:25:41 【问题描述】:我需要从 pyspark 数据框中的一列字符串中删除正则表达式
df = spark.createDataFrame(
[
("Dog 10H03", "10H03"),
("Cat 09H24 eats rat", "09H24"),
("Mouse 09H45 runs away", "09H45"),
("Mouse 09H45 enters room", "09H45"),
],
["Animal", "Time"],
)
时间戳,例如10H03,是必须去掉的正则表达式。
+--------------------+------------------+-----+
| Animal| Animal_strip_time| Time|
+--------------------+------------------+-----+
| Dog 10H03| Dog |10H03|
| Cat 09H24 eats rat| Cat eats rat|09H24|
|Mouse 09H45 runs ...| Mouse runs away|09H45|
|Mouse 09H45 enter...|Mouse enters room|09H45|
+--------------------+------------------+-----+
Time
列中的时间戳可能与Animal
列中的时间戳不同。因此,它不能用于匹配字符串。
正则表达式应遵循 XXHXX 模式,其中 X 是 0-9 之间的数字
【问题讨论】:
如果time
可能不同且无法使用,为什么要在问题中包含它?
【参考方案1】:
这应该做的工作:
from pyspark.sql import functions as F
df = df.withColumn("Animal_strip_time", F.regexp_replace("Animal", r"\d\dH\d\d", ""))
df.show()
+--------------------+-----+------------------+
| Animal| Time| Animal_strip_time|
+--------------------+-----+------------------+
| Dog 10H03|10H03| Dog |
| Cat 09H24 eats rat|09H24| Cat eats rat|
|Mouse 09H45 runs ...|09H45| Mouse runs away|
|Mouse 09H45 enter...|09H45|Mouse enters room|
+--------------------+-----+------------------+
【讨论】:
以上是关于从字符串 PySpark 数据框列中删除正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
在pyspark数据框的列中使用正则表达式捕获两个字符串之间的第一次出现的字符串