如何计算 groupBy 子句中的计数,其中还包括空/空字段

Posted

技术标签:

【中文标题】如何计算 groupBy 子句中的计数,其中还包括空/空字段【英文标题】:how to calculate count in groupBy clause where it includes null/empty fields also 【发布时间】:2020-03-30 09:27:09 【问题描述】:

我正在使用 spark-sql-2.4.1v,带有 java8。 我有一个用例场景,我需要计算参与 group by 子句的总记录。 即假设我正在使用 group by 进行平均。 我还需要该组中的记录计数。

如果我 count(col) as total_count , avg(col) as mean group by col(year) 这不考虑 col 的字段是空的。 如何在 total_count 中包含列的空字段?

【问题讨论】:

【参考方案1】:

groupBy 忽略空列。要包含这些列,您需要为这些空单元格分配值。这可以使用df.na.fill 来完成。使用它,您可以为这些列分配默认值(如果要将它们包含在平均值或总和中,则为 0;如果它是字符串类型的列,则为“some_sample_string”,依此类推)。完成na填充后,您可以应用groupBy操作以获得所需的结果。

请看下面的代码:

val new_df = df.na.fill(0, Seq("column_list"))
            .na.fill("sample_string", Seq("string_column_list"))

现在,您可以使用 new_df 进行计算。希望这会有所帮助。

【讨论】:

以上是关于如何计算 groupBy 子句中的计数,其中还包括空/空字段的主要内容,如果未能解决你的问题,请参考以下文章

如何计算单个 groupBy 中的总和和计数?

如何计算 groupby 对象中包含的多个列表并将该组列表中的每个值的计数相加

Pandas、groupby 和其他列中的计数数据

分组数据

分组数据

Groupby并根据Pandas中的多个条件计算计数和均值