我有一个像这样的pyspark数据框:
spark.createDataFrame(
[
(1, '1234ESPNnonzodiac'),
(2, '1234ESPNzodiac'),
(3, '963CNNnonzodiac'),
(4, '963CNNzodiac'),
],
['id', 'col1']
)
我想创建一个新列,在其中将col1
拆分为zodiac
或nonzodiac
这两个词,以便最终可以对这个新列进行分组。
我希望最终输出像这样:
spark.createDataFrame(
[
(1, '1234ESPNnonzodiac', '1234ESPN'),
(2, '1234ESPNzodiac', '1234ESPN'),
(3, '963CNNnonzodiac', '963CNN'),
(4, '963CNNzodiac', '963CNN'),
],
['id', 'col1', 'col2']
)
答案 0 :(得分:1)
我会使用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|
+---+-----------------+--------+