2017-03-01 211 views
0

假设我有一个数据帧df,它有多个列column1,column2 ..我想查找每列中空值的计数。做到这一点的方法是从每一列如:计算dataframe中的空值:scala spark

df.filter($"column1" !== "").count 
df.filter($"column2" !== "").count 
       . 
       . 

但是有没有办法做到一行?

回答

0

我会建议使用某种聚集,并建立一个新的数据框:

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:_*) 
+0

尽管此代码片段可能会解决问题,[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高您的帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –

+0

谢谢你的答案,但我的主要问题是如何避免写'column1','column2' ...不能使用这个代码,如果我有100列或更多。 –

+0

@MpizosDimitris查看我更新的答案 –

相关问题