Apache spark Pyspark:通过解析另一列中的字符串来创建列
我想加入两个数据帧 一个数据帧是这样的,其中Apache spark Pyspark:通过解析另一列中的字符串来创建列,apache-spark,pyspark,apache-spark-sql,pyspark-dataframes,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Dataframes,我想加入两个数据帧 一个数据帧是这样的,其中syscode\u ntwrk被破折号分割 spark.createDataFrame( [ (1, '1234 - ESPN'), (2, '1234 - ESPN'), (3, '963 - CNN'), (4, '963 - CNN'), ], ['id', 'col1'] ) 另一种是这种格式,syscode\u ntwrk连接在一起 spark.c
syscode\u ntwrk
被破折号分割
spark.createDataFrame(
[
(1, '1234 - ESPN'),
(2, '1234 - ESPN'),
(3, '963 - CNN'),
(4, '963 - CNN'),
],
['id', 'col1']
)
另一种是这种格式,syscode\u ntwrk
连接在一起
spark.createDataFrame(
[
(100, '1234ESPN'),
(297, '1234ESPN'),
(3989, '963CNN'),
(478, '963CNN'),
],
['counts', 'col1']
)
在第二个数据帧中是否有方法创建一个新列,以匹配
syscode\u ntwrk
的第一个数据帧Syscode
将始终是一组数字,ntwrk
将始终是一组字母,因此是否有一个正则表达式在两者之间添加一个空格破折号?您可以使用regexp\u extract
提取组,并使用concat\u ws
将组转换为所需的组
import pyspark.sql.functions as F
df = spark.createDataFrame(
[
(100, '1234ESPN'),
(297, '1234ESPN'),
(3989, '963CNN'),
(478, '963CNN'),
],
['counts', 'col1']
)
df.select(
F.concat_ws(
' - ',
F.regexp_extract('col1', '(\d+)([a-zA-Z]+)', 1),
F.regexp_extract('col1', '(\d+)([a-zA-Z]+)', 2)
).alias('parsed')
).show()
+-----------+
| parsed|
+-----------+
|1234 - ESPN|
|1234 - ESPN|
| 963 - CNN|
| 963 - CNN|
+-----------+