PySpark 数据帧聚合中包含 null 的计数

2024-02-04

我正在尝试使用 agg 和 count 来获取 DataFrame 的一些计数。

from pyspark.sql import Row ,functions as F
row = Row("Cat","Date")
df = (sc.parallelize
  ([
        row("A",'2017-03-03'),
        row('A',None),
        row('B','2017-03-04'),
        row('B','Garbage'),
        row('A','2016-03-04')
]).toDF())
df = df.withColumn("Casted", df['Date'].cast('date'))
df.show()
(
df.groupby(df['Cat'])
.agg
(
    #F.count(col('Date').isNull() | col('Date').isNotNull()).alias('Date_Count'),
    F.count('Date').alias('Date_Count'),
    F.count('Casted').alias('Valid_Date_Count')
)    
.show()

)

函数 F.count() 只给我非空计数。除了使用“OR”条件之外,还有其他方法可以获取包含空值的计数吗?

无效计数似乎不起作用。 & 条件看起来没有按预期工作。

(
 df
 .groupby(df['Cat'])
.agg
 (
  F.count('*').alias('count'),    
  F.count('Date').alias('Date_Count'),
  F.count('Casted').alias('Valid_Date_Count'),
  F.count(col('Date').isNotNull() & col('Casted').isNull()).alias('invalid')
 )    
.show()
)

将布尔表达式转换为int and sum it

df\
    .groupby(df['Cat'])\
    .agg ( 
        F.count('Date').alias('Date_Count'), 
        F.count('Casted').alias('Valid_Date_Count'), 
        F.sum((~F.isnull('Date')&F.isnull("Casted")).cast("int")).alias("Invalid_Date_Cound")
    ).show()

    +---+----------+----------------+------------------+
    |Cat|Date_Count|Valid_Date_Count|Invalid_Date_Cound|
    +---+----------+----------------+------------------+
    |  B|         2|               1|                 1|
    |  A|         2|               2|                 0|
    +---+----------+----------------+------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySpark 数据帧聚合中包含 null 的计数 的相关文章

随机推荐

  • Multiprocessing.Queue 当足够大时会挂起进程

    今天 我偶然发现了一些令人沮丧的行为multiprocessing Queues 这是我的代码 import multiprocessing def make queue size ret multiprocessing Queue for
  • 克隆 git repo 导致错误 - 主机密钥验证失败。 fatal:远端意外挂断

    我正在使用 SSH 将 git 存储库克隆到我的 Web 服务器 但每次都会收到此错误 git clone email protected cdn cgi l email protection aleccunningham marjoram
  • 如果列表中的数字小于 10,则在数字前面添加 0(在 python 中)

    编写一个 Python 程序 要求用户输入一串小写字符 然后打印其相应的两位数代码 例如 如果输入是 home 输出应该是 08151305 目前我的代码正在制作所有数字的列表 但我不能 让它在个位数前面添加一个 0 def word ou
  • 为什么 inotify 会丢失事件?

    我需要使用 Perl 和处理大量 100s 的系统日志消息Linux Inotify2 http search cpan org perldoc Linux 3a 3aInotify2 我编写了一个连续生成日志消息的测试脚本 为了处理事件
  • 如果调用函数指针,则是否使用它

    这个问题是由评论引发的here https stackoverflow com a 44740285 4832499 考虑下面的代码 template
  • tfignore 无法在 VS 2013 中工作

    我正在将 Visual studio 2013 与 TFS 2013 一起使用 我一直在尝试使用 tfignore 获取文件夹中的所有文件 以不签入 并且经过数小时的搜索和尝试不同的解决方案 但没有成功 我按照说明进行操作http msdn
  • 在android studio中嵌入人行横道

    我对 android 编程和 android studio 很陌生 我为我的项目研究了 Crosswalk 嵌入 API 并尝试将其嵌入到 Android Studio 中 但我没能成功 即使我也不知道如何嵌入具有 gradle 文件或不具
  • 在测试使用 qunit 显示警报的方法时避免/捕获/验证 Javascript 警报

    我刚刚开始使用 Qunit 想知道是否有办法捕获 验证 忽略警报 例如 function to test alert I m displaying an alert return 42 然后有类似的东西 test to test funct
  • 如何在Python中隐藏FFmpeg的控制台输出?

    我当时正在做一个YouTube 视频下载器Python 程序 我想将下载的数据编码为我使用的这项工作的其他媒体格式FFmpeg and FFmpeg Python 在 Python 中使用 FFmpeg 的包 一切都很好 但我想问我如何禁用
  • 非解引用迭代器是否超过了数组未定义行为的“最后一个”迭代器?

    Given int foo 0 1 2 3 我想知道指向 最后一个 的迭代器是否无效 例如 auto bar cend foo 1 在 Stack Overflow 问题中 有大量投诉和警告称这是 未定义的行为 如下所示 c 当迭代器结束时
  • 不同优化的无法解释的时间

    我正在编写一些代码 这些代码必须根据设置对大型数据集应用不同的算法 数据集很大 现实世界的时间表明我们需要在可能的情况下对其进行优化 所选算法必须在大型数组的许多数据子集上运行 因此 我决定尝试几种不同的方法 初始化一个Func lt gt
  • 将字符串输入随机化为所有可能性

    我需要帮助制作一个程序 该程序使用 args 获取字符串并将其随机化为每种可能性 然后 程序的结果将被保存到用户在执行程序时提供的文本文件中 如果你需要all以随机顺序排列可能的排列 那么我建议构建然后打乱列表 from itertools
  • 如何使用 XPATH 获取 XML 元素的相对深度

    我试图从给定 XML 文件中的特定元素查找给定 XML 元素的相对深度 我尝试使用 XPATH 但我对 XML 解析不太熟悉 并且没有得到所需的结果 我还需要在计数时忽略数据元素 下面是我编写的代码和示例 XML 文件 例如 的深度NM10
  • Maven 依赖项失败并出现 501 错误

    最近Maven构建正在运行的作业Jenkins失败并出现以下异常 表示他们无法从中提取依赖项梅文中心并且应该使用HTTPS 我不知道如何更改请求HTTP to HTTPS 有人可以在这件事上指导我吗 错误 无法解析的构建扩展 Plugin
  • 本地网络上的自托管 ServiceStack REST 服务

    我想知道是否有人可以提供帮助 我有一个本地网络 无线网络 我的计算机和连接到它的笔记本电脑 并且我尝试托管一个使用 ServiceStack 开发的休息服务 如果我在计算机上运行该应用程序 现在是控制台应用程序 并尝试使用计算机 IP 或
  • Swift:如何在每次出现表视图时重新加载新内容(例如数组)?

    我有一个带有两个视图的选项卡栏 tablview 视图控制器添加数据 然后我有一个数组 它将从视图控制器更新为新内容 例如 仅附加新字符串 该数组填充表视图 现在 当应用程序启动时 表视图显示所有数组内容 但是当我通过选项卡栏移动到视图控制
  • 在 Linux 上安装 antlr4 c++ 运行时后,一些包含文件被破坏

    我在linux上下载了antlr4工具并安装了c 运行时 usr local include 我创建了一个小语法文件 使用antlr4命令成功生成了解析器和词法分析器 但是在编译主文件时出现以下错误 我改变了Interval h里面的标题
  • 我可以在模板绑定中传递变量吗?

    我知道这不是长期使用的好方法 但是为了进行故障排除 有什么方法可以在绑定模板时传递一个简单的字符串 然后将其作为模板中的变量访问 例如 如果这是我的绑定 这是tmplOne div span Fruit span span span div
  • 在画布上画“洞”

    我试图在自定义视图的 onDraw 方法中绘制这样的形状 不幸的是 我无法 剪切 画布上的透明圆圈 通过使用 Color Transparent 绘制圆圈 我应该首先在另一个位图中绘制形状 然后将其绘制在 onDraw 提供的画布上吗 或者
  • PySpark 数据帧聚合中包含 null 的计数

    我正在尝试使用 agg 和 count 来获取 DataFrame 的一些计数 from pyspark sql import Row functions as F row Row Cat Date df sc parallelize ro