2016-12-26 70 views
0

以下项目是我想要实现的操作:PySpark当列表

types = ["200","300"] 
def Count(ID): 
    cnd = F.when((**F.col("type") in types**), 1).otherwise(F.lit(0)) 
    return F.sum(cnd).alias("CountTypes") 

粗体语法是不正确的,任何建议,如何在这里得到正确的语法PySpark?

回答

1

我不知道你正在努力实现什么,但这里是正确的语法:

>>> types = ["200","300"] 
>>> from pyspark.sql import functions as F 
>>> cnd = F.when(F.col("type").isin(types),1).otherwise(F.lit(0)) 
>>> F.sum(cnd).alias("count_types") 
# Column<(sum(CASE WHEN type IN (200,300) THEN 1 ELSE 0),mode=Complete,isDistinct=false) AS count_types#3> 
+0

THX它的作品,我试图做列表的意思是名单上的同样的事情例如,类型中的每个项目都是一个元组。它不允许在列表/元组中使用isin。任何想法如何克服它? – Menkes