在PySpark中具有空值的列上应用诸如count,sum之类的聚合函数时出现问题

时间:2018-09-18 13:42:30

标签: pyspark

我们有以下输入数据框。

df1


Dep |性别|薪水| DOB |地方

财务|男| 5000 | 2009-02-02 00:00:00 |英国

HR |女性| 6000 | 2006-02-02 00:00:00 |空

HR |男性| 14200 |空|美国

IT |男|空| 2008-02-02 00:00:00 |空

IT |男| 55555 | 2008-02-02 00:00:00 |英国

市场营销|女性| 12200 | 2005-02-02 00:00:00 |英国


使用以下代码查找计数:

    df = df1.groupBy(df1['Dep'])
    df2 =  df.agg({'Salary':'count'})
    df2.show()

结果是:


Dep | count(薪水)

财务| 1

HR | 2

营销| 1

IT | 1


预期结果如下所示。


Dep | count(薪水)

财务| 1

HR | 2

营销| 1

IT | 2


此处的问题与第4行数据一起出现,其中Salary数据为null。而且对null进行计数操作不起作用。

感谢您在解决此问题方面的帮助。

1 个答案:

答案 0 :(得分:0)

您可以替换空值:

df \
    .na.fill({'salary':0}) \
    .groupBy('Dep') \
    .agg({'Salary':'count'})