当加入两个DataFrames防止复制列

学习如何防止重复列在连接两个DataFrames砖。

写的亚当Pavlacka

去年发表在:2022年10月13日

如果你执行加入火花和不正确地指定您加入你会得到重复的列名。这使它更难选择列。本文和笔记本演示如何执行一个连接,这样你就不会有重复的列。

连接列上

如果你加入列上,得到复制列。

Scala

% scala val llist = Seq ((“bob”、“2015-01-13”、4),(“爱丽丝”,“2015-04-23”,10))val左= llist.toDF(“名字”,“日期”、“持续时间”)val右= Seq((“爱丽丝”,100年),(“bob”, 23)) .toDF(“名字”,“上传”)val df =。加入(右,left.col(“名字”)= = = right.col(“名字”))

Python

% python llist =[(“鲍勃”,“2015-01-13”,4),(“爱丽丝”,“2015-04-23”,10)]=火花。createDataFrame (llist(“名字”,“日期”,“时间”))=火花。createDataFrame([(“爱丽丝”,100年),(“鲍勃”、23)],[“名称”,“上传”])df =。left.name = = right.name加入(右)

解决方案

加入列指定为数组或字符串类型。

Scala

% scala val df =。加入(右,Seq(“名字”))
% scala val df =。“名称”加入(右)

Python

% python df =。(“名字”)加入(右)
% python df =。“名称”加入(右)

R

第一次注册DataFrames表。

% python left.createOrReplaceTempView (“left_test_table”) right.createOrReplaceTempView (“right_test_table”)
% r库(SparkR) sparkR.session(左)< - sql (“SELECT * FROM left_test_table”) < - sql (“SELECT * FROM right_test_table”)

上面的代码会导致重复的列。下面的代码并没有。

% r(下降(加入(左,右,左$ name = =右美元的名字),左美元的名字))

加入DataFrames笔记本与复制列

检查加入DataFrames复制列例子笔记本