如何基于两列中的值来子集/创建一个新的pyspark df

j2qf4p5b  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(373)

我们如何筛选 CID 从下面 df 其中 ID 以及 TS 是一样的。
测向=
idcidtsac1t1ac2t1ac3t2bc4t2
需要输出数据框
cidc1c2型
谢谢您。

mgdq6dx1

mgdq6dx11#

您可以获取id和ts的每个分区的计数,并筛选计数大于或等于2的行。

from pyspark.sql import functions as F, Window 

df2 = df.withColumn(
    'cnt', 
    F.count('*').over(Window.partitionBy('ID', 'TS'))
).filter('cnt >= 2').select('CID')

df2.show()
+---+
|CID|
+---+
| C1|
| C2|
+---+

相关问题