我有以下格式的Spark数据框:
+------+-------+-----+--------+
| Year | Month | Day | Ticker |
+------+-------+-----+--------+
我试图按“年”对所有值进行分组,并计算每年每一列中缺失值的数量。
我发现了以下代码片段(忘记了来自哪里):
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
这在计算每列缺失值的数量时非常有效。但是,我不确定如何修改此值以计算每年的缺失值。
任何朝着正确方向的指针将不胜感激。
答案 0 :(得分:0)
您可以使用相同的逻辑并添加分组依据。请注意,我还从汇总列中删除了“年”,但这是可选的(您将获得两个“年”列)。
columns = filter(lambda x: x != "year", df.columns)
df.groupBy("year")\
.agg(*(sum(col(c).isNull().cast("int")).alias(c) for c in columns))\
.show()