use*_*807 5 python apache-spark pyspark
我目前有一个数据框,其中一列的类型为"abcde ...".将此列命名为"col4"
我想通过拆分col4的元素将一行拆分成多行,保留所有其他列的值.
因此,例如,给定单行的df:
col1 [0] | col2 [0] | col3 [0] | abc |
我希望输出为:
col1 [0] | col2 [0] | col3 [0] | a |
col1 [0] | col2 [0] | col3 [0] | b |
col1 [0] | col2 [0] | col3 [0] | c |
使用split和explode函数,我尝试了以下方法:
d = COMBINED_DF.select(col1, col2, col3, explode(split(my_fun(col4), " ")))
Run Code Online (Sandbox Code Playgroud)
但是,这会产生以下输出:
col1 [0] | col2 [0] | col3 [0] | abc |
col1 [0] | col2 [0] | col3 [0] | abc |
col1 [0] | col2 [0] | col3 [0] | abc |
这不是我想要的.
mto*_*oto 10
这是一个可重复的例子:
# Create dummy data
df = sc.parallelize([(1, 2, 3, 'a b c'),
(4, 5, 6, 'd e f'),
(7, 8, 9, 'g h i')]).toDF(['col1', 'col2', 'col3','col4'])
# Explode column
from pyspark.sql.functions import split, explode
df.withColumn('col4',explode(split('col4',' '))).show()
+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
| 1| 2| 3| a|
| 1| 2| 3| b|
| 1| 2| 3| c|
| 4| 5| 6| d|
| 4| 5| 6| e|
| 4| 5| 6| f|
| 7| 8| 9| g|
| 7| 8| 9| h|
| 7| 8| 9| i|
+----+----+----+----+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5246 次 |
| 最近记录: |