【发布时间】:2022-01-06 15:10:26
【问题描述】:
我有以下名为“df”的 Pyspark 数据框:
A = ["OTH/CON", "Freight Collect", "OTH/CON", "DBG"]
B = [2, 3, 4, 5]
df = sqlContext.createDataFrame(zip(A, B), schema=['A', 'B'])
在“A”列中,我需要将值“OTH/CON”和“Freight Collect”替换为另一个字符串“Collect”。并将“DBG”替换为“Dispose”。然后将值放入新列“aa”。我执行以下操作:
from pyspark.sql import functions as F
df = df.withColumn("aa", F.when(F.col("A").isin(["OTH/CON"]), F.lit("Collect")).otherwise(F.col("A")))
df = df.withColumn("aa", F.when(F.col("A").isin(["Freight Collect"]), F.lit("Collect")).otherwise(F.col("A")))
df = df.withColumn("aa", F.when(F.col("A").isin(["DBG"]), F.lit("Dispose")).otherwise(F.col("A")))
但我最终只将“Freight Collect”值更改为“Collect”。 “OTH/CON”保持原样。
我不知道为什么!
我的预期输出如下:
+---------------+---+-------+
| A| B| aa|
+---------------+---+-------+
| OTH/CON| 2|Collect|
|Freight Collect| 3|Collect|
| OTH/CON| 4|Collect|
| DBG| 5|Dispose|
+---------------+---+-------+
有人可以帮忙吗?
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql apache-spark-2.0