我在spark中有一个数据框,我想手动映射其中一列的值:
Col1
Y
N
N
Y
N
Y
我希望“ Y”等于1,“ N”等于0,像这样:
Col1
1
0
0
1
0
1
我已经尝试过StringIndexer,但是我认为它会随机编码分类数据。 (我不确定)
与此等效的python是:
df["Col1"] = df["Col1"].map({"Y": 1, "N": 0})
能帮我在Pyspark中实现这一目标吗?
答案 0 :(得分:0)
由于您要将值映射到1
和0
,因此一种简单的方法是指定布尔条件并将结果转换为int
from pyspark.sql.functions import col
df.withColumn("Col1", (col("Col1")=="Y").cast("int"))
对于更一般的情况,您可以使用pyspark.sql.functions.when
来实现if-then-else逻辑:
from pyspark.sql.functions import when
df.withColumn("Col1", when(col("Col1").isin(["Y"]), 1).otherwise(0))