计算dataframe中的空值:scala spark
问题描述:
假设我有一个数据帧df
,它有多个列column1
,column2
..我想查找每列中空值的计数。做到这一点的方法是从每一列如:计算dataframe中的空值:scala spark
df.filter($"column1" !== "").count
df.filter($"column2" !== "").count
.
.
但是有没有办法做到一行?
答
我会建议使用某种聚集,并建立一个新的数据框:
df.agg(
sum(when($"column1" !== "", 1).otherwise(0)),
sum(when($"column2" !== "", 1).otherwise(0))
)
编辑:如果你有很多栏目,尝试这样的事情:
val ncols=2
val cols = (1 to ncols)
.map(i=> sum(when(col("column"+i)!=="",1).otherwise(0)))
df.agg(cols.head,cols.tail:_*)
尽管此代码片段可能会解决问题,[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高您的帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –
谢谢你的答案,但我的主要问题是如何避免写'column1','column2' ...不能使用这个代码,如果我有100列或更多。 –
@MpizosDimitris查看我更新的答案 –