我得到了一个输入pysaprk Dataframe ,如下所示:
df = spark.createDataFrame(
[("1111", "[clark, john, silvie]"),
("2222", "[bob, charles, seth]"),
("3333", "[jane, luke, adam]"),
],
["column1", "column2"]
)
| column1 | column2 |
| ------- | ------- |
| 1111 | [clark kent, john, silvie] |
| 2222 | [bob, charles, seth rog] |
| 3333 | [jane, luke max, adam] |
我的目标是将列和值从StringType()中的column2
转换为StringType()的ArrayType()。
但是我只得到了将其转换为ArrayType的部分结果,但是字符串列表中包含多个单词的那些值被单独拆分,如下所示:
from pyspark.sql.functions import expr
df_out = df.withColumn('column2', expr(r"regexp_extract_all(column2, '(\\w+)', 1)"))
这会得到如下结果(我的正则表达式技能不是很好):
| column1 | column2 |
| ------- | ------- |
| 1111 | ["clark", "kent", "john", "silvie"] |
| 2222 | ["bob", "charles", "seth", "rog"] |
| 3333 | ["jane", "luke", "max", "adam"] |
但实际上我希望得到这样的东西:
| column1 | column2 |
| ------- | ------- |
| 1111 | ["clark kent", "john", "silvie"] |
| 2222 | ["bob", "charles", "seth rog"] |
| 3333 | ["jane", "luke max", "adam"] |
1条答案
按热度按时间nmpmafwu1#
你的输出与输入相比不好。无论如何修改输入。让我知道这是否是你想要的
使用translate替换角括号。用逗号分隔结果