Pyspark:通过拆分文本创建新列

Pyspark: create new column by splitting text

我有一个像这样的 pyspark 数据框:

spark.createDataFrame(
    [
        (1, '1234ESPNnonzodiac'), 
        (2, '1234ESPNzodiac'),
        (3, '963CNNnonzodiac'), 
        (4, '963CNNzodiac'),
    ],
    ['id', 'col1'] 
)

我想创建一个新列,其中我将 col1 拆分为单词 zodiacnonzodiac,这样我最终可以根据这个新列进行分组。

我希望最终输出是这样的:

spark.createDataFrame(
    [
        (1, '1234ESPNnonzodiac', '1234ESPN'), 
        (2, '1234ESPNzodiac', '1234ESPN'),
        (3, '963CNNnonzodiac', '963CNN'), 
        (4, '963CNNzodiac', '963CNN'),
    ],
    ['id', 'col1', 'col2'] 
)

我会用 from pyspark.sql.functions import regexp_extract:

df.withColumn("col2", regexp_extract(df.col1, r"([\s\S]+?)(?:non)?zodiac", 1)).show()
+---+-----------------+--------+
| id|             col1|    col2|
+---+-----------------+--------+
|  1|1234ESPNnonzodiac|1234ESPN|
|  2|   1234ESPNzodiac|1234ESPN|
|  3|  963CNNnonzodiac|  963CNN|
|  4|     963CNNzodiac|  963CNN|
+---+-----------------+--------+