我有一个复杂的数据结构,我设法展平,输出具有以下结构:
'name'
------
['a','b','c']
[]
[null]
null
['f']
[null,'d']
过滤上述数据帧后的所需输出:
'name'
------
['a','b','c']
['f']
我知道只有'null'的行可以使用df.where(col('name').isNotNull())
进行过滤。我尝试使用
filtered = udf(lambda row: int(not all(x is None for x in row)),IntegerType())
但这并没有产生我希望的结果。如何筛选空列表或至少包含一个空的行?
答案 0 :(得分:0)
以下过滤的功能可以用作你的udf
filtered = lambda x: not bool([y for y in x if y is None]) if x else False
>>> filtered(['a','b','c'])
True
>>> filtered([])
False
>>> filtered([None])
False
>>> filtered(None)
False
>>> filtered(['f'])
True
>>> filtered([None,'d'])
False