pyspark-loop和for-in-range-仅获取最后一个值

rjzwgtxy  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(216)

我想将一个Dataframe的两列两乘二地合并,所以我使用了“for in range”函数。但是,我只是在显示最后一个结果时。
如何在Dataframe中获得所有结果?
这是我的密码:

from pyspark.sql.functions import concat_ws, col

df = spark.read.load('abfss://......')

for item in range(1,21,2): 
   df2=df.select(concat_ws("/",df[item:item],df[item+1:item+1]).alias(df.columns[item:item]))

display(df2)

谢谢你的帮助

wvmv3b1j

wvmv3b1j1#

列表索引不返回任何内容,因为开始索引和结束索引相同,并且正在覆盖Dataframe df2 在for循环的每次迭代中。请尝试以下方法:

from pyspark.sql.functions import concat_ws

df2 = df.select([
    concat_ws('/', df.columns[i], df.columns[i+1]).alias(df.columns[i])
    for i in range(1,21,2)
])

相关问题