我正在嘗試創建一個函式來檢查資料的質量(nans/nulls 等)我在 PySpark DataFrame 上運行了以下代碼
df.select([f.count(f.when((f.isnan(c) | f.col(c).isNull()), c)).alias(c) for c in cols_check]).show()
只要要檢查的列是字串/整數,我就沒有問題。但是,當我檢查資料型別為date或 的列時,timestamp收到以下錯誤:
Date_Time由于資料型別不匹配,無法決議“isnan( )”:引數 1 需要(雙精度或浮點數)型別,但是,“Date_Time”是時間戳型別。;;\n'聚合...
列中有明確的空值,我該如何補救?
uj5u.com熱心網友回復:
您可以使用df.dtypes來檢查每列的型別,并能夠像這樣以不同的方式處理timestamp和date空計數:
from pyspark.sql import functions as F
df.select(*[
(
F.count(F.when((F.isnan(c) | F.col(c).isNull()), c)) if t not in ("timestamp", "date")
else F.count(F.when(F.col(c).isNull(), c))
).alias(c)
for c, t in df.dtypes if c in cols_check
]).show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394030.html
標籤:阿帕奇火花 火花 apache-spark-sql 空值 南
