Ich versuche, einen PySpark-Datenrahmen mit einem Zeilenwert zu filtern None
:
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')]
und ich kann mit einem String-Wert richtig filtern:
df[df.dt_mvmt == '2016-03-31']
# some results here
aber das schlägt fehl:
df[df.dt_mvmt == None].count()
0
df[df.dt_mvmt != None].count()
0
Aber es gibt definitiv Werte für jede Kategorie. Was ist los?
Antworten:
Sie können
Column.isNull
/ verwendenColumn.isNotNull
:Wenn Sie fallen einfach wollen
NULL
Werte können Sie verwenden ,na.drop
mitsubset
Argument:Gleichheitsbasierte Vergleiche mit
NULL
funktionieren nicht, da in SQLNULL
undefiniert ist und jeder Versuch, sie mit einem anderen Wert zu vergleichen, Folgendes zurückgibtNULL
:Die einzig gültige Methode zum Vergleichen von Werten
NULL
istIS
/,IS NOT
die denisNull
/isNotNull
method-Aufrufen entspricht.quelle
__eq__
bei None erkundigen;) Undis
würde nicht funktionieren, weil es sich nicht so verhält.df.filter("dt_mvmt is not NULL")
beide behandelt.Versuchen Sie einfach die Funktion isNotNull zu verwenden.
quelle
Um Einträge zu erhalten, deren Werte in der
dt_mvmt
Spalte nicht null sind, haben wirund für Einträge, die null sind, haben wir
quelle
Wenn du mit dem Pandas Syntex bleiben willst, hat das bei mir funktioniert.
quelle
wenn Spalte = Keine
Verwenden Sie erstellen Sie einen verlockenden Datenrahmen:
Verwenden Sie also:
column_old_value='None'
quelle
Es gibt mehrere Möglichkeiten, wie Sie die Nullwerte aus einer Spalte in DataFrame entfernen / filtern können.
Erstellen wir einen einfachen DataFrame mit dem folgenden Code:
Jetzt können Sie einen der folgenden Ansätze ausprobieren, um die Nullwerte herauszufiltern.
Weitere Informationen finden Sie auch im Abschnitt "Arbeiten mit NULL-Werten" in meinem Blog .
Ich hoffe, es hilft.
quelle
PySpark bietet verschiedene Filteroptionen basierend auf arithmetischen, logischen und anderen Bedingungen. Das Vorhandensein von NULL-Werten kann weitere Prozesse behindern. Sie zu entfernen oder statistisch zu unterstellen, könnte eine Wahl sein.
Der folgende Codesatz kann berücksichtigt werden:
quelle
Ich würde auch versuchen:
df = df.dropna(subset=["dt_mvmt"])
quelle
Wenn Sie Datensätze mit dem Wert None in der Spalte herausfiltern möchten, sehen Sie das folgende Beispiel:
Filtern Sie nun Nullwertdatensätze heraus:
Wenn Sie diese Datensätze aus DF entfernen möchten, sehen Sie unten:
quelle
None / Null ist ein Datentyp der Klasse NoneType in pyspark / python. Daher funktioniert Below nicht, wenn Sie versuchen, das NoneType-Objekt mit dem Zeichenfolgenobjekt zu vergleichen
Falsche Art zu filterndf [df.dt_mvmt == None] .count () 0 df [df.dt_mvmt! = None] .count () 0
richtig
df = df.where (col ("dt_mvmt"). isNotNull ()) gibt alle Datensätze mit dt_mvmt als None / Null zurück
quelle