Dataframe PySpark数据帧筛选器列包含多个值

Dataframe PySpark数据帧筛选器列包含多个值,dataframe,apache-spark,pyspark,Dataframe,Apache Spark,Pyspark,只是想知道是否有有效的方法来过滤包含值列表的列,例如: 假设我要筛选一个包含beef的列,beef: 我可以做到: beefDF=df.filter(df.ingredients.contains('Beef')|df.ingredients.contains('beef')) 我想创建一个列表,而不是采用上述方法: beef_product=['Beef','beef'] 并且做: beefDF=df.filter(df.ingredients.contains(beef_product)

只是想知道是否有有效的方法来过滤包含值列表的列,例如:

假设我要筛选一个包含beef的列,beef:

我可以做到:

beefDF=df.filter(df.ingredients.contains('Beef')|df.ingredients.contains('beef'))
我想创建一个列表,而不是采用上述方法:

beef_product=['Beef','beef']
并且做:

beefDF=df.filter(df.ingredients.contains(beef_product))
我不需要维护代码,只需要在beef_产品列表中添加新的beef(例如ox、ribeyes)即可获得过滤器数据框


显然,contains函数不采用列表类型,实现这一点的好方法是什么?

尝试使用
.isin()
接受
列表

beefDF=df.filter(df.ingredients.isin(beef_product))
示例:

df=spark.createDataFrame([(1,'beef'),(2,'Beef'),(3,'b')],['id','ingredients'])

from pyspark.sql.functions import *
beef_product=['Beef','beef']
df.filter(df.ingredients.isin(beef_product)).show()
#+---+-----------+
#| id|ingredients|
#+---+-----------+
#|  1|       beef|
#|  2|       Beef|
#+---+-----------+

请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。
from pyspark.sql.functions import *
df=spark.createDataFrame([(1,'beef'),(2,'Beef'),(3,'Cow'), (3,'Tiger')],  
                         ['id','ingredients'])
df.filter("ingredients in ('Beef','Tiger')").show()