Учитывая DataFrame со следующими строками:
rows = [
Row(col1='abc', col2=[8], col3=[18], col4=[16]),
Row(col2='def', col2=[18], col3=[18], col4=[]),
Row(col3='ghi', col2=[], col3=[], col4=[])]
Я хотел бы удалить строки с пустым массивом для каждого из col2
, col3
и col4
(т.е. 3-й строки).
Например, я мог бы ожидать, что этот код будет работать:
df.where(~df.col2.isEmpty(), ~df.col3.isEmpty(), ~df.col4.isEmpty()).collect()
у меня две проблемы
- как комбинировать предложения where с
and
, но что более важно... - как определить, что массив пуст.
Итак, есть ли встроенная функция для запроса пустых массивов? Есть ли элегантный способ привести пустой массив к значению na
или null
?
Я пытаюсь избежать использования python для его решения либо с UDF, либо с .map()
.