【问题标题】:PySpark - Resolving isnan errors with TimeStamp datatypePySpark - 使用 TimeStamp 数据类型解决 isnan 错误
【发布时间】:2022-01-24 06:01:19
【问题描述】:

我正在尝试创建一个函数来检查数据的质量(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()

只要要检查的列是字符串/整数,我就没有问题。但是,当我检查数据类型为 datetimestamp 的列时,我收到以下错误:

由于数据类型不匹配,无法解析“isnan(Date_Time)”: 参数 1 需要(双精度或浮点)类型,但是,'Date_Time' 是 时间戳类型。;;\n'聚合...

列中有明显的空值,如何补救?

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql null nan


    【解决方案1】:

    您可以使用df.dtypes 检查每列的类型,并能够像这样以不同的方式处理timestampdate 空计数:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2022-01-17
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多