【问题标题】:Sum aggregation is returning null when ran on empty dataframe在空数据帧上运行时,总和聚合返回 null
【发布时间】:2022-11-18 05:48:41
【问题描述】:

我正在尝试运行以下查询:

df.filter(col("id") == id).agg(
            F.sum(col("count")).alias("count")
        )

在上面这个初始运行的示例中,df 将是一个空数据帧,因此过滤器会将计数设为 0。但是当在其上运行总和聚合时,它会给我计数为 1 的 result_df,如下所示: +------------+ |计数 +------------+ |空| +------------+

我希望 result_df 的大小为 0。任何人都可以帮助找出我做错了什么吗?

我也尝试将“count”列的数据类型更改为 long 但没有帮助。

【问题讨论】:

    标签: python-3.x dataframe apache-spark pyspark aggregate-functions


    【解决方案1】:

    我认为你可以使用 na.drop: na.drop example

    在这里,我的示例类似于您添加的 na.drop

    from pyspark.sql.functions import col
    from pyspark.sql.functions import lit
    
    df = spark.createDataFrame(
       [("APPLE", "1"),
       ("APPLE", "2"),
       ("GRAPE", "3"),
       ("BANANA", "4"),
       ("BANANA", "5")],
       ["id", "count"]
    )
    
    df.filter(col("id") == F.lit("WRONG_ID_GIVING_EMPTY_DF")).agg(
        F.sum(col("count")).alias("count")
    ).na.drop().show()
    

    结果:

    +-----+
    |count|
    +-----+
    +-----+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多