Che*_*ole 4 dataframe apache-spark pyspark
只是想知道是否有任何有效的方法来过滤包含值列表的列,例如:
假设我要过滤一列包含牛肉,Beef:
我可以:
beefDF=df.filter(df.ingredients.contains('Beef')|df.ingredients.contains('beef'))
Run Code Online (Sandbox Code Playgroud)
我不想这样做,而是想创建一个列表:
beef_product=['Beef','beef']
Run Code Online (Sandbox Code Playgroud)
并做:
beefDF=df.filter(df.ingredients.contains(beef_product))
Run Code Online (Sandbox Code Playgroud)
我不需要维护代码,但只需要在 Beef_product 列表中添加新的牛肉(例如牛、肋眼)即可获得过滤数据框。
显然 contains 函数不采用列表类型,实现这一点的好方法是什么?
尝试使用.isin()Accept list。
beefDF=df.filter(df.ingredients.isin(beef_product))
Run Code Online (Sandbox Code Playgroud)
Example:
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|
#+---+-----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14601 次 |
| 最近记录: |