Вы недостаточно четко сформулировали свой вопрос, но я постараюсь на него ответить.
Необходимо понимать, что столбец данных может иметь только один тип данных для всех строк. Если ваши начальные данные являются целыми числами, то вы не можете проверить равенство строк с пустой строкой, а с нулевым значением.
Также сбор списка возвращает массив целых чисел, поэтому вы не можете иметь [7, 5] в одной строке и "'" в другой строке. В любом случае это работает для вас?
from pyspark.sql.functions import col, collect_list
listOfTuples = [(1, 3, 1),(2, 3, 2),(1, 4, 5),(1, 4, 7),(5, 5, 8),(4, 1, 3),(2,4,None)]
df = spark.createDataFrame(listOfTuples , ["A", "B", "option"])
df.show()
>>>
+---+---+------+
| A| B|option|
+---+---+------+
| 1| 3| 1|
| 2| 3| 2|
| 1| 4| 5|
| 1| 4| 7|
| 5| 5| 8|
| 4| 1| 3|
| 2| 4| null|
+---+---+------+
dfFinal = df.filter((df.A == 1)|(df.A == 2)).groupby(['A','B']).agg(collect_list(df['option']))
dfFinal.show()
>>>
+---+---+--------------------+
| A| B|collect_list(option)|
+---+---+--------------------+
| 1| 3| [1]|
| 1| 4| [5, 7]|
| 2| 3| [2]|
| 2| 4| []|
+---+---+--------------------+