Вот один из способов использования split и size :
from pyspark.sql.functions import split, size, col, when
df.withColumn("ar", split(df["Column 1"], ",")) \
.withColumn("Column 2", when(
size(col("ar")) == 1, col("ar")[0])
.otherwise(col("ar")[1])) \
.withColumn("Column 1", when(size(col("ar")) == 2, col("ar")[0])) \
.drop("ar") \
.show()
# +--------+--------+
# |Column 1|Column 2|
# +--------+--------+
# | A1| A2|
# | null| B1|
# | C1| C2|
# | null| D2|
# +--------+--------+
Сначала мы разделяем Column 1
запятыми, затем мы получаем условный доступ к элементам массива .