我想把多个DF联系起来。因为join是如何工作的,所以我得到了相同的列名。
当调用类型为(K,V)和(K,W)的数据集时,返回(K,(V,W)对的数据集,其中包含每个键的所有元素对。
# Join Min and Max to S1
joinned_s1 = (minTime.join(maxTime, minTime["UserId"] == maxTime["UserId"]))
# Join S1 and sum to s2
joinned_s2 = (joinned_s1.join(sumTime, joinned_s1["UserId"] == sumTime["UserId"]))我得到了这个错误:“引用'UserId‘是模棱两可的,可能是: UserId#1578,UserId#3014。”
成功地加入数据集后,从数据集中删除W的正确方法是什么?
发布于 2016-07-19 22:53:00
您可以使用:
minTime.join(maxTime, ["UserId"]).join(sumTime, ["UserId"])别名:
minTime.alias("minTime").join(
maxTime.alias("maxTime"),
col("minTime.UserId") == col("maxTime.UserId")
)或引用父表:
(minTime
.join(maxTime, minTime["UserId"] == maxTime["UserId"])
.join(sumTime, minTime["UserId"] == sumTime["UserId"]))另外,您引用的是RDD文档,而不是DataFrame文档。它们是不同的数据结构,操作方式不同。
而且看起来你在做一些奇怪的事。假设您有一个父表min,则可以将max和sum计算为没有join的简单聚合。
发布于 2018-08-23 08:22:09
如果将两个数据帧连接到列上,那么这些列将被复制。因此,尝试使用数组或字符串连接两个或多个数据帧。
例如,如果在列上连接:
df = left.join(right, left.name == right.name)输出将由两个带有"name“的列组成。
现在,如果您使用:
df = left.join(right, "name") OR df=left.join(right,["name"])那么输出将不会有重复的列。
https://stackoverflow.com/questions/38468568
复制相似问题