如何删除pyspark数据帧的行,其中任何列的值小于1%le或大于99%le?

时间:2017-05-17 18:19:36

标签: python dataframe pyspark

我想为每列找到1%le和99%le,并删除pyspark数据帧的相应行。 感谢

1 个答案:

答案 0 :(得分:0)

您可以使用percent_rank()函数,例如,如果您有DataFrame,其中包含两列CREDIT和DEBIT,则可以计算额外列并使用它进行过滤。 您无法从DataFrame中删除行,只能过滤到新行。

from pyspark.sql.window import Window
from pyspark.sql.functions import percent_rank
df3=df.select('CREDIT','DEBIT', percent_rank().over(Window.orderBy(df.CREDIT)).alias("credit_perc"),percent_rank().over(Window.orderBy(df.DEBIT)).alias("debit_perc"))\
  .where('debit_perc >=0.99 or debit_perc <=0.01 ').where('credit_perc >=0.99 or credit_perc <=0.91')