【发布时间】:2016-09-12 18:21:34
【问题描述】:
我正在尝试过滤具有 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
但每个类别肯定都有价值。怎么回事?
【问题讨论】:
-
您实际上想要过滤具有空值的行,而不是具有无值的列。标题可能具有误导性。
-
简而言之,涉及 null(或 None,在这种情况下)的比较总是返回 false。特别是,比较 (null == null) 返回 false。此外,比较 (None == None) 返回 false。
标签: python apache-spark dataframe pyspark apache-spark-sql