J'essaye de filtrer un cadre de données PySpark qui a None
comme valeur de ligne :
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')]
et je peux filtrer correctement avec une valeur de type chaîne :
df[df.dt_mvmt == '2016-03-31']
# some results here
mais cela échoue :
df[df.dt_mvmt == None].count()
0
df[df.dt_mvmt != None].count()
0
Mais il y a définitivement des valeurs dans chaque catégorie. Qu'est-ce qui se passe ?
1 votes
Vous voulez en fait filtrer les lignes avec des valeurs nulles, et non une colonne avec des valeurs nulles. Le titre peut être trompeur.
0 votes
En bref, une comparaison impliquant null (ou None, dans ce cas) renvoie toujours false. En particulier, la comparaison (null == null) renvoie un résultat faux. De même, la comparaison (None == None) renvoie un résultat faux.