我想过滤一个基于多列的df,所有的列都应该满足条件。下面是python的版本:
df[(df["a list of column names"] <= a value).all(axis=1)]
在pyspark中有没有什么简单的函数可以做到这一点?谢谢!
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。如果least为True,则意味着所有值均为True,因此按至少== True过滤等效于all。
greatest
True
any
least
False
all
1条答案
按热度按时间7dl7o3gd1#
.任何
.全部
greatest
将取列表中的最大值,对于布尔值,如果存在任何True
,则取True
,因此按最大值== True过滤等效于any
。而
least
将取最小值,对于布尔值,如果存在任何False
,则取False
。如果least
为True
,则意味着所有值均为True
,因此按至少== True过滤等效于all
。