获取重复计数但在pyspark中保留重复行

获取重复计数但在pyspark中保留重复行,pyspark,Pyspark,我试图在pyspark数据帧中找到重复的行数。我找到了类似的答案 但它只输出一个二进制标志。我想知道每行的实际计数。 使用orignal post的示例,如果我有这样一个数据帧: +--+--+--+--+ |a |b |c |d | +--+--+--+--+ |1 |0 |1 |2 | |0 |2 |0 |1 | |1 |0 |1 |2 | |0 |4 |3 |1 | |1 |0 |1 |2 | +--+--+--+--+ 我想得出如下结论: +--+--+--+--+--+--+--+

我试图在pyspark数据帧中找到重复的行数。我找到了类似的答案 但它只输出一个二进制标志。我想知道每行的实际计数。 使用orignal post的示例,如果我有这样一个数据帧:

+--+--+--+--+
|a |b |c |d |
+--+--+--+--+
|1 |0 |1 |2 |
|0 |2 |0 |1 |
|1 |0 |1 |2 |
|0 |4 |3 |1 |
|1 |0 |1 |2 |
+--+--+--+--+ 
我想得出如下结论:

+--+--+--+--+--+--+--+--+
|a |b |c |d |row_count  |
+--+--+--+--+--+--+--+--+
|1 |0 |1 |2 |3          |
|0 |2 |0 |1 |0          |
|1 |0 |1 |2 |3          |
|0 |4 |3 |1 |0          |
|1 |0 |1 |2 |3          |
+--+--+--+--+--+--+--+--+
这可能吗? 谢谢

假设df是您的输入数据帧:

从pyspark.sql.window导入窗口 从pyspark.sql导入函数为F 从pyspark.sql.functions导入* w=窗口分区方式[F.cola,F.colb,F.colc,F.colD] df=df.selectF.cola,F.colb,F.colc,F.colD,F.countF.cola.overv.aliasrow\u count 根据您的示例,如果要将每个计数1替换为0,请执行以下操作:

从pyspark.sql.window导入窗口 从pyspark.sql导入函数为F 从pyspark.sql.functions导入* w=窗口分区方式[F.cola,F.colb,F.colc,F.colD] df=df.selectF.cola,F.colb,F.colc,F.colD,F.countF.cola.overv.aliasrow\u count.selecta,b,c,d,F.whenF.colrow\u count==F.lit1,F.lit0。其他方式f.colrow\u count.aliasrow\u count
谢谢你的洞察力。但是,如果我有很多列,有没有一种方法可以在不指定每个列的情况下打开窗口?是的,如果您想包括所有列,可以使用列表理解并执行:[F.colstrcol uu for col u u in df.columns]如果您只需要一个子集,您可以在其中添加适当的if