【发布时间】:2020-10-27 03:53:57
【问题描述】:
我在 Spark 中有一个数据框,列是名称,它是一个由空格分隔的字符串,棘手的部分是一些名称有中间名,而另一些则没有。如何将列拆分为 firstname、middlename 和 lastname?我正在使用 F.split,不知道如何区分中间名和姓氏。我知道我不能在 Spark 中使用负索引。看看我的示例df
from pyspark.sql import functions as F
cols = ['id', 'name']
vals = [('l03', 'Bob K Barry'), ('S20', 'Cindy Winston'), ('l10', 'Jerry Kyle Moore'), ('j31', 'Dora Larson')]
df = spark.createDataFrame(vals, cols)
df.show()
+---+----------------+
| id| name|
+---+----------------+
|l03| Bob K Barry|
|S20| Cindy Winston|
|l10|Jerry Kyle Moore|
|j31| Dora Larson|
+---+----------------+
split_col = F.split(df['name'], ' ')
df = df.withColumn('firstname', split_col.getItem(0))
df.show()
+---+----------------+---------+
| id| name|firstname|
+---+----------------+---------+
|l03| Bob K Barry| Bob|
|S20| Cindy Winston| Cindy|
|l10|Jerry Kyle Moore| Jerry|
|j31| Dora Larson| Dora|
+---+----------------+---------+
如何继续拆分?赞赏。
【问题讨论】: