PySpark 数据帧分组和计数空值

5 python dataframe apache-spark pyspark

我有以下形式的 Spark 数据框:

+------+-------+-----+--------+
| Year | Month | Day | Ticker |
+------+-------+-----+--------+
Run Code Online (Sandbox Code Playgroud)

我正在尝试按“年份”对所有值进行分组,并计算每年每列中缺失值的数量。

我找到了以下代码段(忘了出处):

df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
Run Code Online (Sandbox Code Playgroud)

这在计算每列缺失值的数量时非常有效。但是,我不确定如何修改它以计算每年的缺失值。

任何指向正确方向的指针将不胜感激。

Oli*_*Oli 9

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

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()
Run Code Online (Sandbox Code Playgroud)