【发布时间】:2020-06-01 18:51:30
【问题描述】:
我正在通过加入 4 个数据框来创建一个新的数据框 之后我需要连接来自不同数据帧的两个相同列 数据:
col1 col2 expected
Acc1 Acc1 Acc1Acc1
Acc2 null Acc2
null Acc3 Acc3
问题: 如果我在不替换空值的情况下进行连接;我松了信息 所以加入后;由于 pyspark 不会删除公共列,因此我们有来自 2 个表的两个 Account 列 我尝试用空字符串替换它;它不起作用并引发错误:数据帧不可迭代
查询: 加入表后如何用空字符串替换空值? 或者有什么办法可以同时处理 null 和 concat ?
df = df1\
.join(df2,"code",how = 'left') \
.join(df3,"id",how = 'left')\
.join(df4,"id",how = 'left')\
.withColumn('Account',F.when(df2('Account').isNull(),'').otherwise(df2('Account')))\
.withColumn('Account',F.when(df3('Account').isNull(),'').otherwise(df3('Account')))\
.withColumn("Account",F.concat(F.trim(df2.Account), F.trim(df3.Account)))
【问题讨论】:
标签: dataframe apache-spark pyspark apache-spark-sql concatenation