Pyspark:通过拆分文本创建新列
Pyspark: create new column by splitting text
我有一个像这样的 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']
)
我会用 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|
+---+-----------------+--------+
我有一个像这样的 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']
)
我会用 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|
+---+-----------------+--------+