Given a Dataframe:
+---+-----------+---------+-------+------------+
| id| score|tx_amount|isValid| greeting|
+---+-----------+---------+-------+---------
you can try several unions :
df = df.select(
"id",
F.col("score").cast("string").alias("col_value"),
F.lit("Y").alias("is_score"),
F.lit("N").alias("is_amount"),
F.lit("N").alias("is_boolean"),
F.lit("N").alias("is_text"),
).union(df.select(
"id",
F.col("tx_amount").cast("string").alias("col_value"),
F.lit("N").alias("is_score"),
F.lit("Y").alias("is_amount"),
F.lit("N").alias("is_boolean"),
F.lit("N").alias("is_text"),
)).union(...) # etc