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

如何用逗号分隔的值拆分列并存储在PySpark的DataFrame中的数组中?如下所示

蓝苗宣
2023-03-14

我有一个PySpark dataframe,它的列包含逗号分隔的值。列包含的值数是固定的(例如4)。示例:

+------------------------+
|col1                    |
+------------------------+
|1,val1, val4            |
|2,val1                  |
|3,val1, val2, val3      |
|4,val1, val2, val3, val4|
+------------------------+
+----+------------------------+
|col1|col2                    |
+----+------------------------+
|   1|[val1, val4]            |
|   2|[val1]                  |
|   3|[val1, val2, val3]      |
|   4|[val1, val2, val3, val4]|
+----+------------------------+

共有1个答案

冯霖
2023-03-14

您可以使用slice和split来实现:

from pyspark.sql.functions import col, split, slice

array_len = 4
df.withColumn("ar", split(col("col1"), ",")) \
  .select(
     col("ar")[0].alias("col1"), 
     slice(col("ar"), 2, array_len).alias("col2")
  )

# +----+---------------------------+
# |col1|col2                       |
# +----+---------------------------+
# |1   |[val1,  val4]              |
# |2   |[val1]                     |
# |3   |[val1,  val2,  val3]       |
# |4   |[val1,  val2,  val3,  val4]|
# +----+---------------------------+

首先,我们将数组拆分为ar并存储到ar中,然后使用select检索数组的第一个项和slice(col(“ar”),2,array_len),这将返回除第一个项之外的所有项。

 类似资料:
  • 我有一个PySpark数据帧,其中一列包含逗号分隔的值。该列包含的值的数量是固定的(例如4)。示例: 在这里,我想将col2拆分为4个单独的列,如下所示: 如何做到这一点?

  • 问题内容: 我的数据库中有列,其中的值如下所示: 在虚拟列中没有任何编号。逗号分隔的值可以出现。我尝试了以下查询,但它正在创建重复的结果。 我不明白这个问题。谁能帮忙? 问题答案: 非常适合我- 还有许多其他方法可以实现它。阅读将单个逗号分隔的字符串拆分成行。 *关于使用列而不是单个字符串值时的重复项的 *更新 。只见PRIOR子句中使用DBMS_RANDOM的摆脱循环回路的在这里 尝试以下方法

  • 问题内容: 如何将逗号分隔的字符串拆分为存储过程中的字符串,并将其插入表字段中? 使用Firebird 2.5 问题答案: 这里有一个示例如何分割字符串并将子字符串写入表中:

  • 问题内容: 我返回的值包含255个逗号分隔的值。有没有一种简单的方法可以将其拆分为不具有255 substr的列? 到 问题答案: 您可以使用: 我建议您在Excel(或其他电子表格)中生成255个数字的列,并使用电子表格生成SQL代码。

  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如:

  • 我想从中的一列创建多个列,使用JavaSpark中的逗号分隔符。 我在中的一列中有一个带逗号的值,并希望使用逗号分隔符将其拆分为多列。我有以下代码: 输入 输出