将所有 pyspark 数据帧列连接成一个字符串列

2024-01-15

我有以下 pyspark 数据框

identification p1 p2 p3 p4
1 1 0 0 1
2 0 1 1 0
3 0 0 0 1

我想连接从 p1 到 p4 的所有列,以这种方式收集 1 和 0 的值

identification p1 p2 p3 p4 joined_column
1 1 0 0 1 1001
2 0 1 1 0 0110
3 0 0 0 1 0001

从 p1 到 p4 的所有列都是整数,因此我尝试在以这种方式连接所有列(“标识”列除外)之前将它们转换为字符串:


from pyspark.sql.types import StringType 
from pyspark.sql import functions as F

df_concat=df.withColumn('joined_column', F.concat([F.col(c).cast(StringType()) for c in df.columns if  c!='identification']))

我收到以下错误:

TypeError: Invalid argument, not a string or column: 

是否有任何解决方案或其他方法将 pyspark 数据帧的所有列连接成一个字符串?


你必须使用concat_ws

from pyspark.sql.functions import concat_ws
df = df.withColumn('joined_column',concat_ws('',df.p1, df.p2, df.p3, df.p4))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将所有 pyspark 数据帧列连接成一个字符串列 的相关文章

随机推荐