【问题标题】:Replace empty string with Null Values用空值替换空字符串
【发布时间】:2020-07-21 11:50:14
【问题描述】:

我有一个数据框,其列 TotalCharges 是字符串类型,它有一些空值,我希望打印 null 而不是那些空格。

现在列

**************
|1671.6                           |
|8003.8                           |
|680.05                           |
|6130.85                          |
|1415                             |
|6201.95                          |
|                                 |
|74.35                            |
|6597.25                          |

预期输出

|1671.6                           |
|8003.8                           |
|680.05                           |
|6130.85                          |
|1415                             |
|6201.95                          |
|Null                             |
|74.35                            |
|6597.25                          |

【问题讨论】:

  • 您能告诉我们您为实现这一目标所做的努力吗?你有什么问题吗?
  • 我试过 df.na.replace(Seq("TotalCharges"),Map(" "->"Null"))
  • Df.withColumn("TotalCharges", when($"TotalCharges" !==, $"TotalCharges"))
  • 我已经尝试了这两个查询,但我仍然得到一个空字符串

标签: scala apache-spark


【解决方案1】:

当 String 为 "" 时,以下方式将为您提供列的 null

df.withColumn("TotalCharges",when($"TotalCharges"!=="",$"TotalCharges"))

这将为您提供“Null”字符串:

df.withColumn("TotalCharges",when($"TotalCharges"==="","Null").otherwise($"TotalCharges"))

【讨论】:

  • 这两个都不起作用,我仍然可以看到空白处。
  • TotalCharges 列是字符串列,要不要先转成整数?
【解决方案2】:

你可以试试这样的:

import org.apache.spark.sql.functions.{when,lit, _}
df.withColumn("TotalCharges", when(col("name") === lit(""), null).otherwi
se(col("TotalCharges")))

【讨论】:

  • 这将打印 Null 值来代替空字符串?
  • 不要认为列类中有then() 方法,但这应该可以工作:df.withColumn("TotalCharges", when(col("TotalCharges") == "", None).else(col("TotalCharges"))
  • 对不起,是的,我忘记了语法;我纠正了它已经有一段时间了
  • :1:错误:需要标识符,但找到了“else”。 df.withColumn("TotalCharges", when(col("TotalCharges") == "", None).else(col("TotalCharges"))
  • 复制粘贴我的答案,否则应该使用
猜你喜欢
  • 2018-01-12
  • 2022-12-09
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 2016-04-14
相关资源
最近更新 更多