【发布时间】:2019-06-03 10:34:39
【问题描述】:
我有 2 个 DF 要合并:
DF1 --> 包含股票
Plant Art_nr Tot
A X 5
B Y 4
DF2 --Z 包含未结交付
Plant Art_nr Tot
A X 1
C Z 3
我想获得一个 DF3,其中对于 Plant 和 Art_nr 的每种组合: - 如果 DF1.Plant&Art_nr 和 DF2.Plant&Art_nr 之间存在匹配,我会得到 DF1 和 DF2 之间的区别 - 如果 DF1.Plant&Art_nr 和 DF2.Plant&Art_nr 不匹配,我会保留 DF1 和 DF2 的原始值
DF3 -->
Plant Art_nr Total
A X 4
B Y 4
C Z 3
我在 DF1 和 DF2 中创建了一个“Concat”字段来连接 Plant 和 Art_nr,我尝试使用完全连接 + when + 否则但我找不到正确的语法
DF1.join(DF2, ["Concat"],"full").withColumn("Total",when(DF1.Concat.isin(DF2.Concat)), DF1.Tot - DF2.Tot).otherwise(when(not(DF1.Concat.isin(DF2.Concat)), DF1.Tot)).show()
对我可以使用的替代功能有什么建议,或者如何正确使用这些功能?
【问题讨论】:
标签: dataframe pyspark databricks