假设我有以下数据框:
col1 | col2 | col3
a | toto | 1
a | toto | 2
a | toto | 45
a | toto | 789
a | toto | 456
b | titi | 4
b | titi | 8
以col1
作为主键。
我想知道如何确定哪个键在col1
数据框中出现的次数少于 5 次。
所以输出应该是:
col1 | col2 | col3
b | titi |
到目前为止,我想出了以下解决方案:
anc_ref_window = Window.partitionBy("col1")
df\
.withColumn("temp_one", lit(1)) \
.withColumn("count", sum(col("temp_one")).over(anc_ref_window)) \
.drop("temp_one") \
.filter(col("count") < 5) \
.drop("count") \
.show()
这给出了以下结果:
col1 | col2 | col3
b | titi | 4
b | titi | 8
1 - 这是解决问题的正确方法吗?
2 - 我怎样才能得到预期的输出?对于我的 pyspark (2.1.0) 版本,似乎没有像select distinct col1,col2
我通过 Impala所做的那样的机制(例如)。
编辑:
col3 中的输出值对我来说无关紧要。
@koilaro 将我导向distinct
. 但是,它不提供在pyspark 2.1.0
.
但是,dropDuplicates
工作是否:
df\
.withColumn("temp_one", lit(1)) \
.withColumn("count", sum(col("temp_one")).over(anc_ref_window)) \
.drop("temp_one") \
.filter(col("count") < 5) \
.drop("count") \
.dropDuplicates(["col1"])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句