我有以下 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(使用前将#替换为@)