我是Spark初学者,我正在尝试决定是否可以从数据框中抛出一列。
假设我有这个数据框:
a b
----------
g x
f y
g x
f y
我想知道列'a'和'b'之间存在精确映射,因此我可以抛出其中一个。
但是,如果数据框是这样的:
a b
----------
g x
f x
g x
f y
两列之间没有映射,因此必须保留两列。
您对如何解决此问题有任何暗示吗? 谢谢
答案 0 :(得分:3)
假设df
是有问题的数据框。
假设您只想知道b
是否“冗余”:
df.select('a).distinct().count() == df.select('a, 'b).distinct().count()
如果这种情况属实,您可以“抛弃”b
,因为始终有一个唯一的a
标识该值。
答案 1 :(得分:0)
简单dropDuplicates
api应该处理您的问题
val dataframe = Seq(("g","x"),
("f","y"),
("g","x"),
("g","y"),
("f","y")).toDF("a", "b")
dataframe.dropDuplicates("a", "b").show(false)