Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组中两列中的对的pyspark count not null值_Python_Group By_Count_Pyspark_Null - Fatal编程技术网

Python 组中两列中的对的pyspark count not null值

Python 组中两列中的对的pyspark count not null值,python,group-by,count,pyspark,null,Python,Group By,Count,Pyspark,Null,我有一些这样的数据 A B C 1 Null 3 1 2 4 2 Null 6 2 2 Null 2 1 2 3 Null 4 我想按A分组,然后计算不包含Null值的行数。因此,结果应该是 A count 1 1 2 1 3 0 我认为这行不通,是吗 df.groupby('A').agg(count('B','C')) 您可以删除包含空值的行,然后删除groupby+count: df.

我有一些这样的数据

A    B    C
1   Null  3
1   2     4
2   Null  6
2   2    Null
2   1    2
3   Null 4
我想按A分组,然后计算不包含Null值的行数。因此,结果应该是

A    count  
1      1
2      1
3      0
我认为这行不通,是吗

df.groupby('A').agg(count('B','C'))

您可以删除包含空值的行,然后删除groupby+count:

df.选择“A”。删除重复项。加入 df.dropnahow='any'.groupby'A'.count,on=['A'],how='left' 显示 +--+---+ |伯爵| +--+---+ | 1| 1| |3 |零| | 2| 1| +--+---+ 如果不想执行联接,请创建另一列以指示列B或C中是否存在null:

导入pyspark.sql.f函数 df.selectExpr'*', '如果B不为空,C不为空,则1或0结束为D' .groupby'A'.aggf.sum'D'.alias'count'.show +--+---+ |伯爵| +--+---+ | 1| 1| | 3| 0| | 2| 1| +--+---+
就个人而言,我会使用一个辅助列来说明B或C是否为Null。此解决方案中的结果为负值,并返回1或0。并对该列使用sum

从pyspark.sql.functions导入总和,当 ... df.withColumns不为空,当df.B.isNull | df.C.isNull时,0.otherwise1\ .groupByA.aggsumisNotNull 演示:

df.show +--+--+--+ | _1| _2| _3| +--+--+--+ |1 |空| 3| | 1| 2| 4| |2 |空| 6| |2 | 2 |空| | 2| 1| 2| |3 |空| 4| +--+--+--+ df.withcolumns不为空,当df._2.isNull | df._3.isNull,0.otherwise1.show +--+--+--+-----+ |_1 | | u 2 | | u 3 |不为空| +--+--+--+-----+ |1 |空| 3 | 0| | 1| 2| 4| 1| |2 |零| 6 | 0| |2 | 2 |零| 0| | 2| 1| 2| 1| |3 |零| 4 | 0| +--+--+--+-----+ df.withcolumns不为空,当df._2.isNull | df._3.isNull,0.otherwise1\ .groupBy_1.aggsumisNotNull.show +--+-------+ || sumisNotNull| +--+-------+ | 1| 1| | 3| 0| | 2| 1| +--+-------+
嗨,Psidom,很抱歉我忘了更新我的问题。请看编辑后的问题。我真的不想使用连接将所有类别保留在“A”中,但在这个过程中,我想我需要做一个左连接。非常感谢。