我正在尝试过滤具有 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
但是每个类别肯定都有价值。这是怎么回事?
原文由 Ivan 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
Column.isNull
/Column.isNotNull
:如果您想简单地删除
NULL
值,您可以使用na.drop
和subset
参数:与
NULL
的基于平等的比较将不起作用,因为在 SQL 中NULL
未定义,因此任何将其与另一个值进行比较的尝试都会返回NULL
:The only valid method to compare value with
NULL
isIS
/IS NOT
which are equivalent to theisNull
/isNotNull
方法调用。