我有一个数据集DS
,如下所示:
ds.show():
id1 | id2 | id3 | value |
1 | 1 | 2 | tom |
1 | 1 | 2 | tim |
1 | 3 | 2 | tom |
1 | 3 | 2 | tom |
2 | 1 | 2 | mary |
id1 | id2 | id3 | value |
1 | 3 | 2 | tom |
2 | 1 | 2 | mary |
val df = Seq(
(1, 1, 2, "tom"),
(1, 1, 2, "tim"),
(1, 3, 2, "tom"),
(1, 3, 2, "tom"),
(2, 1, 2, "mary")
).toDF("id1", "id2", "id3", "value")
val window = Window.partitionBy("id1", "id2", "id3")
df.distinct().withColumn("count", count("value").over(window))
.filter($"count" < 2)
.drop("count")
.show(false)
以下是如何使用groupby
、count
和first
函数来实现
df.distinct()
.groupBy("id1", "id2", "id3")
.agg(count("value").as("count"), first("value").as("value"))
.filter($"count" < 2 )
.drop("count")
.show(false)
产出:
+---+---+---+-----+
|id1|id2|id3|value|
+---+---+---+-----+
|1 |3 |2 |tom |
|2 |1 |2 |mary |
+---+---+---+-----+
但是它并不像预期的那样工作,因为它将删除所有重复的行。 我想这样做的原因是与另一个数据集联接,而不是在同一个键组有多个名称时从该数据集添加信息
我有一个数据帧重复行除了一个值。我想过滤掉它们,只保留值较高的行。 等等。 因此,例如,需要比较具有skill_a和相同User_ID的行,并且只保留具有最近一年的行。 仅按用户ID提供组的行数。 只给了我一个系列,我无法合并回df。 反对的想法? 谢谢你
问题内容: 我必须清理具有重复行的表: 一个可能具有多个值: 我想对整个表执行一个查询,并删除和重复的所有行。在上面的示例中,删除后,我只想剩下1、2、4和5。 问题答案: ;WITH x AS ( SELECT id, gid, url, rn = ROW_NUMBER() OVER (PARTITION BY gid, url ORDER BY id) FROM dbo.table ) SEL
我有一个对象数组,希望删除所有具有特定键值的对象。 该数组如下所示:
Spark-Scala环境中的函数有一些问题。我想在我的DataFrame中添加一个新列,如下所示: 变成: 但是Spark返回给我这个错误: 你能帮我吗?非常感谢!
这是我的数据样本 我编写了以下代码,它删除了所有分类列(例如)。但是,一些非类别列具有值。如何将它们从我的数据集中排除。 当我运行程序时,我得到错误来说太大的值,我认为这是由于值造成的。 问题1-我如何完全删除这些行问题2-这些列的类型是什么,大部分是NO。但两者之间有短信吗?我想我将执行,但这并没有给出结果