将列合并为值

b91juud3  于 2021-05-22  发布在  Spark
关注(0)|答案(1)|浏览(459)

我正在读s3的df。这就是我的模式-
文件1-

root

|-- patient: long (nullable = true)
 |-- payment1: double (nullable = true)

文件2-

root

|-- patient: long (nullable = true)
 |-- payment2: double (nullable = true)

我试图合并支付领域,但无法这样做成功。我需要这样做,因为我需要添加两个支付领域,他们都可以为null或空。
到目前为止,我已经尝试了以下方法- df.na.fill -不起作用,因为我有空字符串 .select(when(col("payment1") === "", 0.0).otherwise(col("payment1")) 使用上述两种方法,当我添加两列时,如果一个值为null或空,我仍然会得到null。

4si2a6ki

4si2a6ki1#

可以使用when方法检查空和null,将其替换为lit(0)并将其强制转换为double(如果列的数据类型不是double,则不需要强制转换)。

file1Df.withColumn("payment1",
  when(col("payment1") === "" or col("payment1").isNull,lit(0))
    .otherwise(col("payment1")).cast(DoubleType))

相关问题