繁体   English   中英

减去两个数据帧中的列以获得 Spark Scala 中的差异

[英]Subtract columns in two dataframes to get differences in Spark Scala

有两个具有相同列的数据框,我想创建一个结果 dataframe 与列之间的差异,考虑到数据框有很多列(和行)。

我猜这个方法是先做一个内部连接,然后做一个“WithColumn” ,里面有一个减法,但我不知道如何以自动化的方式为很多列做到这一点。

例子:

第一个 dataframe:

ID col1 col2 col3 ... colXX
1 1.1 1.2 1.6 ... 1.8

第二个 dataframe:

ID col1 col2 col3 ... colXX
1 1.2 1.2 2.1 ... 2.1

预期 dataframe:

ID diff_col1 diff_col2 diff_col3 ... diff_colXX
1 0.1 0.0 0.5 ... 0.3

预先感谢!

首先准备差异的选择,然后将其应用于从连接中生成的 dataframe。

val selection = 
    df1.columns.diff(Seq("Id"))
       .map(x => (col(s"df1.$x") - col(s"df2.$x")) as s"diff_$x")

val query = 
    df1.as("df1")
       .join(df2.as("df2"), Seq("Id"), "inner")
       .select((Seq(col("df1.Id")) ++ selection):_*)

请注意连接中数据帧上的别名与差异计算中使用的名称匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM