用空值替换空字符串
Posted
技术标签:
【中文标题】用空值替换空字符串【英文标题】: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")) 我已经尝试了这两个查询,但我仍然得到一个空字符串 【参考方案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"))
对不起,是的,我忘记了语法;我纠正了它已经有一段时间了
以上是关于用空值替换空字符串的主要内容,如果未能解决你的问题,请参考以下文章
IOS,如何在数组中的 dic 中循环 dic 以替换空字符串的空值