过滤PySpark数据帧行

时间:2017-05-21 17:00:42

标签: pyspark spark-dataframe

我有一个复杂的数据结构,我设法展平,输出具有以下结构:

    '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())

但这并没有产生我希望的结果。如何筛选空列表或至少包含一个空的行?

1 个答案:

答案 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