我正在尝试过滤具有 None
作为行值的PySpark数据帧:
df.select('dt_mvmt').distinct().collect()
[Row(dt_mvmt=u'2016-03-27'),
Row(dt_mvmt=u'2016-03-28'),
Row(dt_mvmt=u'2016-03-29'),
Row(dt_mvmt=None),
Row(dt_mvmt=u'2016-03-30'),
Row(dt_mvmt=u'2016-03-31')]
我可以使用字符串值正确过滤:
df[df.dt_mvmt == '2016-03-31']
# some results here
但这失败了:
df[df.dt_mvmt == None].count()
0
df[df.dt_mvmt != None].count()
0
但每个类别肯定都有 Value 观 . 这是怎么回事?
3 回答
你可以使用
Column.isNull
/Column.isNotNull
:如果您只想删除
NULL
值,可以使用带有subset
参数的na.drop
:与
NULL
进行基于平等的比较将不起作用,因为在SQL中,NULL
未定义,因此任何将其与另一个值进行比较的尝试都会返回NULL
:将值与
NULL
进行比较的唯一有效方法是IS
/IS NOT
,它等同于isNull
/isNotNull
方法调用 .尝试使用isNotNull函数 .
要获取
dt_mvmt
列中的值不为null的条目,我们有对于我们有空的条目