[Aktualisiert, um sich an die Moderne anzupassen pandas
, die isnull
als Methode von DataFrame
s ..]
Sie können eine boolesche Reihe verwenden isnull
und any
erstellen, um sie in Ihren Frame zu indizieren:
>>> df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)])
>>> df.isnull()
0 1 2
0 False False False
1 False True False
2 False False True
3 False False False
4 False False False
>>> df.isnull().any(axis=1)
0 False
1 True
2 True
3 False
4 False
dtype: bool
>>> df[df.isnull().any(axis=1)]
0 1 2
1 0 NaN 0
2 0 0 NaN
[Für ältere pandas
:]
Sie können die Funktion isnull
anstelle der Methode verwenden:
In [56]: df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)])
In [57]: df
Out[57]:
0 1 2
0 0 1 2
1 0 NaN 0
2 0 0 NaN
3 0 1 2
4 0 1 2
In [58]: pd.isnull(df)
Out[58]:
0 1 2
0 False False False
1 False True False
2 False False True
3 False False False
4 False False False
In [59]: pd.isnull(df).any(axis=1)
Out[59]:
0 False
1 True
2 True
3 False
4 False
was zu dem eher kompakten führt:
In [60]: df[pd.isnull(df).any(axis=1)]
Out[60]:
0 1 2
1 0 NaN 0
2 0 0 NaN
df[df.isnull().any(axis=1)]
funktioniert aber wirftUserWarning: Boolean Series key will be reindexed to match DataFrame index.
. Wie schreibt man dies expliziter und so um, dass diese Warnmeldung nicht ausgelöst wird?df.loc[df.isnull().any(axis=1)]
.any()
und.all()
eignen sich hervorragend für Extremfälle, jedoch nicht, wenn Sie nach einer bestimmten Anzahl von Nullwerten suchen. Hier ist eine äußerst einfache Möglichkeit, das zu tun, was Sie meiner Meinung nach verlangen. Es ist ziemlich ausführlich, aber funktional.Ausgabe
Wenn Sie dann wie ich sind und diese Zeilen löschen möchten, schreiben Sie einfach Folgendes:
Ausgabe:
quelle