вы можете использовать arrays_zip, чтобы получить пары, а затем использовать функцию разнесения.
import org.apache.spark.sql.functions.{col, explode, arrays_zip}
dfx.withColumn("zipped", arrays_zip(col("MemberProperty"), col("Value")))
.withColumn("exploded", explode(col("zipped")))
.drop("MemberProperty", "Value")
.withColumn("MemberProperty", col("exploded.MemberProperty"))
.withColumn("Value", col("exploded.Value"))