python - PySpark Dataframe Groupby 和计数空值
问题描述
我有以下形式的 Spark 数据框:
+------+-------+-----+--------+
| Year | Month | Day | Ticker |
+------+-------+-----+--------+
我正在尝试按“年份”对所有值进行分组,并计算每年每列中缺失值的数量。
我找到了以下片段(忘记了从哪里来):
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
这在计算每列缺失值的数量时非常有效。但是,我不确定如何修改它来计算每年的缺失值。
任何指向正确方向的指针都将不胜感激。
解决方案
您可以使用相同的逻辑并添加分组依据。请注意,我还从聚合列中删除了“年份”,但这是可选的(您将获得两个“年份”列)。
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()
推荐阅读
- ansible - 如何在 Ansible Playbook 中使用变量
- python - OPC(服务器和客户端)与 python
- angular - Angular - 单例服务更改仅针对一个组件
- spotfire - 在 spotfire 中保存用户输入
- powershell-core - 如何在 PowerShell 核心中创建永久别名文件?
- javascript - Javascript 运算符“in”不适用于浮点数
- swift - Render text with SKRenderer
- java - 如何检查 JAVA 代码(保留在数据库中)是否正确完成或突然终止?
- xamarin.forms - Xamarin iOS build error - Native linking failed (Link Framework SDKs Only)
- django - 对于 nginx,我是在为这个 url https://localhost:3000 监听端口 443 还是端口 3000?