PySpark数据框分组和计算空值数量

10
我有一个形式如下的Spark Dataframe:
+------+-------+-----+--------+
| Year | Month | Day | Ticker |
+------+-------+-----+--------+

我想把所有的值按“年份”分组,并计算每一列每年缺失值的数量。
我找到了下面的代码片段(忘记从哪里找到的):
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()

这在计算每列缺失值的数量时完美运作。但是,我不确定如何修改它以计算每年的缺失值数量。
非常感谢任何指向正确方向的提示。
1个回答

9

你可以使用相同的逻辑并添加groupby。请注意,我还从聚合列中删除了“year”,但这是可选的(您将获得两个“year”列)。

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()

干杯;我之前尝试过这个,但是出现了错误,不确定原因。 - user10691834
1
啊,我的错,我没有用“agg”替换“select”,这导致了错误。谢谢你的帮助 :-) - user10691834

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接