通过.all()或any()在多个列上设置pyspark筛选条件

vfh0ocws  于 2023-03-01  发布在  Spark
关注(0)|答案(1)|浏览(139)

我想过滤一个基于多列的df,所有的列都应该满足条件。下面是python的版本:

df[(df["a list of column names"] <= a value).all(axis=1)]

在pyspark中有没有什么简单的函数可以做到这一点?谢谢!

7dl7o3gd

7dl7o3gd1#

.任何
# You can omit "== True"
df.filter(F.greatest(*[F.col(c) <= 100 for c in df.columns]) == True)
.全部
# You can omit "== True"
df.filter(F.least(*[F.col(c) <= 100 for c in df.columns]) == True)

greatest将取列表中的最大值,对于布尔值,如果存在任何True,则取True,因此按最大值== True过滤等效于any
least将取最小值,对于布尔值,如果存在任何False,则取False。如果leastTrue,则意味着所有值均为True,因此按至少== True过滤等效于all

相关问题