当前位置: 首页 > 知识库问答 >
问题:

将Spark Dataframe字符串列拆分为多列

刘海
2023-03-14
rdd.map(lambda row: row + [row.my_str_col.split('-')])
col1 | my_str_col
-----+-----------
  18 |  856-yygrm
 201 |  777-psgdg
col1 | my_str_col | _col3 | _col4
-----+------------+-------+------
  18 |  856-yygrm |   856 | yygrm
 201 |  777-psgdg |   777 | psgdg

理想情况下,我希望这些新列也被命名。

共有1个答案

长孙鸿波
2023-03-14

pyspark.sql.functions.split()是正确的方法-只需将嵌套的ArrayType列扁平化为多个顶级列即可。在这种情况下,每个数组只包含2个项,这非常容易。只需使用column.getitem()将数组的每个部分作为列本身检索:

split_col = pyspark.sql.functions.split(df['my_str_col'], '-')
df = df.withColumn('NAME1', split_col.getItem(0))
df = df.withColumn('NAME2', split_col.getItem(1))

结果将是:

col1 | my_str_col | NAME1 | NAME2
-----+------------+-------+------
  18 |  856-yygrm |   856 | yygrm
 201 |  777-psgdg |   777 | psgdg

我不确定如何在嵌套数组的大小不一样的一般情况下解决这个问题。

 类似资料:
  • 本文向大家介绍如何在R中将字符串列拆分为多列?,包括了如何在R中将字符串列拆分为多列?的使用技巧和注意事项,需要的朋友参考一下 这可以在tidyr软件包的帮助下完成。 示例

  • 我正在Spark 3.0.0上执行Spark结构流的示例,为此,我使用了twitter数据。我在Kafka中推送了twitter数据,单个记录如下所示 2020-07-21 10:48:19|1265200268284588034|RT@narendramodi:与@IBM首席执行官@ArvindKrishna先生进行了广泛的互动。我们讨论了几个与技术相关的主题,…|印度海得拉巴 在这里,每个字段

  • 问题内容: 我如何将字符串分成多行,如下所示? 问题答案: Swift 4包括对多行字符串文字的支持。除换行符外,它们还可以包含未转义的引号。 较早版本的Swift不允许您在多行上使用单个文字,但可以在多行上将文字添加在一起:

  • 问题内容: 我需要在SQL Server 2012中将一列中的字符串拆分为一个字符,并将每个字符串拆分成它自己的列。 例如:如果我有一个栏,我需要把它拆分成,,,,,与每个这些转化为自己列。 要拆分的列的长度可能会有所不同,因此我需要使其尽可能地动态。 问题答案: 您可以这样做: 输出: 这是动态版本:

  • 我不知道如何使用来实现拆分行单元格的目标。我可以使用添加一个新列,并用填充它。有什么想法吗?

  • 问题内容: 我希望我的Python函数拆分一个句子(输入)并将每个单词存储在列表中。我当前的代码拆分了句子,但没有将单词存储为列表。我怎么做? 问题答案: 这应该足以将每个单词存储在列表中。 words已经是句子中单词的列表,因此不需要循环。 其次,这可能是拼写错误,但是你的循环有些混乱。如果你确实确实想使用附加,它将是: 不