#apache-spark #pyspark #apache-spark-sql
#apache-spark #pyspark #apache-spark-sql
Вопрос:
Код Pandas
df=df.groupby('col1').filter(lambda g: ~ (g.col2.isnull()).all())
Сначала сгруппируйте с помощью col1 и удалите группы, если все элементы в col2 имеют значение null.
Я попробовал следующее:
Pyspark
df.groupBy("col1").filter(~df.col2.isNotNull().all())
Ответ №1:
Вы можете выполнить ненулевой подсчет для каждой группы и использовать filter для удаления строк, где счетчик равен 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|
---- ----