将数据帧拆分为两个DataFrame
问题描述:
我有一个基于数字具有唯一以及重复记录的日期帧。现在我想将数据帧分成两个数据帧。在第一个数据帧中,我只需要复制唯一的行,而在第二个数据帧中我想要所有重复的行。例如将数据帧拆分为两个DataFrame
id name number
1 Shan 101
2 Shan 101
3 John 102
4 Michel 103
两个分裂数据框应该像
独特
id name number
3 John 102
4 Michel 103
反复
id name number
1 Shan 101
2 Shan 101
答
你试过很可能让你有解决方案。
你的数据看起来像这样
val df = sc.parallelize(Array(
(1, "Shan", 101),
(2, "Shan", 101),
(3, "John", 102),
(4, "Michel", 103)
)).toDF("id","name","number")
那你自己认为分组和计数。如果你不喜欢这样
val repeatedNames = df.groupBy("name").count.where(col("count")>1).withColumnRenamed("name","repeated").drop("count")
,那么你可以实际做这样的事情以后得到所有的方式:
val repeated = df.join(repeatedNames, repeatedNames("repeated")===df("name")).drop("repeated")
val distinct = df.except(repeated)
repeated show
+---+----+------+
| id|name|number|
+---+----+------+
| 1|Shan| 101|
| 2|Shan| 101|
+---+----+------+
distinct show
+---+------+------+
| id| name|number|
+---+------+------+
| 4|Michel| 103|
| 3| John| 102|
+---+------+------+
希望它能帮助。
+0
你摇滚..... !!!!!! –
+0
@AtifShahzad如果这回答您的问题,那么请您将其标记为已回答?这将从开放问题列表中删除它,并给我一些积分。 –
我都试过,但它返回对数计数 df.groupBy( “数字”)。COUNT()。选择( “*”)。其中( “计数> 1”) 我需要所有重复行与所有专栏 –