gpt4 book ai didi

apache-spark - 如何在字符串第一次出现时拆分列?

转载 作者:行者123 更新时间:2023-12-04 02:54:39 25 4
gpt4 key购买 nike

我有一个以下格式的数据框。我想在“。”之前拆分单词。在用户名列中并将其余部分保留为不同的列

+----+--------+
|Name|Username|
+----+--------+
| ABC|a.b.cdef|
+----+--------+

我想将用户名拆分为

+----+--------+---+------+
|Name|Username| A| B|
+----+--------+---+------+
| ABC|a.b.cdef| a|b.cdef|
+----+--------+---+------+

前缀的长度(在第一个 . 之前)不固定,因此我无法使用 substring 标准函数。

最佳答案

看起来你想在第一个 . 上拆分,您可以使用正则表达式环顾四周来实现。这将使您免于 regexp_replace步骤:

(df.withColumn("Username", split($"Username", "(?<=^[^.]*)\\."))
.withColumn("A", $"Username"(0))
.withColumn("B", $"Username"(1))).show

+----+-----------+---+------+
|Name| Username| A| B|
+----+-----------+---+------+
| ABC|[a, b.cdef]| a|b.cdef|
+----+-----------+---+------+

图案细节(?<=^[^.]*)\\. :

  • 使用向后看?<=限制 . split ;
  • ^[^.]*从不包含 . 的字符串开头匹配模式.注意第一个^表示字符串的开头。 [^.]是匹配除 . 以外的任何字符的字符类和 *是一个量词,表示零个或多个。

将模式组合在一起匹配第一个 .在字符串中。

关于apache-spark - 如何在字符串第一次出现时拆分列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com