在sp中添加带大小写的列

2024-04-26 06:51:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Spark中有一个名为f的数据帧,我想根据大小写向它添加一列。 这就是我尝试过的:

df = f.withColumn('new_col', (case f.val when 1 then 'Y' when 0 then 'N' else null ))

谁能告诉我如何实现这一点。你知道吗


Tags: 数据dfnewcolvalnullelsespark
1条回答
网友
1楼 · 发布于 2024-04-26 06:51:42

null部分使这一点变得异常困难。一种解决方案是使用翻译值创建一个DataFrame,然后使用left_outer对其执行join

val newDF = Seq(("Y",0)).toDF("srcVal", "newVal")
// +   +   +
// |srcVal|newVal|
// +   +   +
// |     Y|     0|
// +   +   +

val df = Seq((1,"Y"),(2,"N"),(3,"Y")).toDF("key","value")
// + -+  -+
// |key|value|
// + -+  -+
// |  1|    Y|
// |  2|    N|
// |  3|    Y|
// + -+  -+

val finalDf = df.join(newDF, $"value" === $"srcVal", "left_outer").drop($"srcVal")
// + -+  -+   +
// |key|value|newVal|
// + -+  -+   +
// |  1|    Y|     0|
// |  2|    N|  null|
// |  3|    Y|     0|
// + -+  -+   +

相关问题 更多 >