Pyspark:我想手动映射数据框中的列之一的值

时间:2019-03-31 03:59:55

标签: pyspark

我在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中实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

由于您要将值映射到10,因此一种简单的方法是指定布尔条件并将结果转换为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))