【发布时间】:2020-01-06 15:16:01
【问题描述】:
我需要在 '=' 上进行拆分,但仅限于第一次出现。
示例:考虑我的数据框如下。
df.show()
+-----------+
| Col|
+-----------+
| He=l=lo|
|How=Are=you|
+-----------+
我希望输出为
df_split.show()
+-----------+-------------+
| col| col_split|
+-----------+-------------+
| He=l=lo| [He,l=lo]|
|How=Are=y=ou|[How,Are=y=ou]|
+-----------+-------------+
我尝试如下拆分解决方案
from pyspark.sql.functions import split
df.withColumn('col_split',split('col','^(.+?)=')).show()
+-----------+----------+
| Words| spl|
+-----------+----------+
| He=l=lo| [, l=lo]|
|I am= fi=ne|[, Are=y=ou]|
+-----------+----------+
注意:我用split(col,'=',1) 尝试了一个简单的UDF,因为数据量很大,速度很慢,有时会无限期挂起。
非常感谢任何帮助。
【问题讨论】:
-
你可以考虑用
df.withColumn("spl_before", regexp_extract("col_split", "^([^=]*)=", 1)).withColumn("spl_after", regexp_extract("col_split", "=(.*)", 1)).show()分成两列
标签: python regex split pyspark