spark:首先按列分组,如果特定列为null,则删除该组

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

Pandas代码

df=df.groupby('col1').filter(lambda g: ~ (g.col2.isnull()).all())

如果col2中的所有元素都为null,则使用col1和remove group创建第一个组。我试过以下几点:
Pypark公司

df.groupBy("col1").filter(~df.col2.isNotNull().all())
mi7gmzs6

mi7gmzs61#

您可以对每个组进行非空计数,并使用筛选器删除计数为0的行:


# example dataframe

df.show()
+----+----+
|col1|col2|
+----+----+
|   1|null|
|   1|null|
|   2|   1|
|   2|null|
|   3|   1|
+----+----+

from pyspark.sql import functions as F, Window

df2 = df.withColumn(
    'not_null', 
    F.count('col2').over(Window.partitionBy('col1'))
).filter('not_null != 0').drop('not_null')

df2.show()
+----+----+
|col1|col2|
+----+----+
|   3|   1|
|   2|   1|
|   2|null|
+----+----+

相关问题