2017-02-24 91 views
0

我有一个pyspark数据框,其中一列填充了列表,其中包含条目或只是空列表。我想有效地过滤掉所有包含空列表的行。Pyspark使用.filter()过滤掉空列表()

df.filter(sf.col('column_with_lists') != [])返回我以下错误:

Py4JJavaError: An error occurred while calling o303.notEqual. 
: java.lang.RuntimeException: Unsupported literal type class 

也许我可以检查列表的长度,并处它应该是> 0(见here)。但是,如果我使用pyspark-sql,并且如果filter甚至允许使用lambda表达式,我不确定这种语法是如何工作的。

也许要明确一点,我有多个列,但希望将上面的过滤器应用于一个列,删除所有条目。链接的SO示例在单个列上过滤。

在此先感谢!

回答

0

所以看起来它就像使用sf.size简单:

df.filter(sf.size('column_with_lists') > 0)