我有一个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]|
+----+------------------------+
您可以使用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代码。
我想从中的一列创建多个列,使用JavaSpark中的逗号分隔符。 我在中的一列中有一个带逗号的值,并希望使用逗号分隔符将其拆分为多列。我有以下代码: 输入 输出
在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如: