In[71]: df
Out[71]:
a b c
0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[72]: df.isna().any()Out[72]:
a True
b True
c False
dtype: bool
In[97]: df
Out[97]:
a b c
0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[98]: pd.isnull(df).sum()>0Out[98]:
a True
b True
c False
dtype: bool
oder als von @root vorgeschlagene klarere Version:
In[5]: df.isnull().any()Out[5]:
a True
b True
c False
dtype: bool
In[7]: df.columns[df.isnull().any()].tolist()Out[7]:['a','b']
So wählen Sie eine Teilmenge aus - alle Spalten, die mindestens einen NaNWert enthalten:
In[31]: df.loc[:, df.isnull().any()]Out[31]:
a b
0NaN7.010.0NaN22.0NaN31.07.041.03.057.04.062.06.079.06.083.00.099.00.0
Danke für die Antwort! Ich suche nach einer Liste der Spaltennamen (ich habe meine Frage entsprechend aktualisiert). Wissen Sie wie?
Denvar
Kennen Sie eine gute Möglichkeit, alle Spalten mit einem bestimmten Wert anstelle von Nullwerten auszuwählen?
Gregorio099
1
Keine Ursache! Ersetzen Sie einfach .isnull () durch .isin (['xxx']), um nach Werten anstelle von Nullen zu suchen:df.columns[df.isin['xxx'].any()].tolist()
gregorio099
@ Gregorio099, ich würde es so machen:df.columns[df.eq(search_for_value).any()].tolist()
MaxU
1
Schöne Antwort, bereits positiv bewertet. Idee - können Sie neue Funktionen hinzufügen isna, notna ?
Jezrael
26
Sie können verwenden df.isnull().sum(). Es zeigt alle Spalten und die gesamten NaNs jedes Features.
Ich hatte ein Problem, bei dem ich zu viele Spalten hatte, um sie auf dem Bildschirm visuell zu überprüfen, sodass eine kurze Liste erstellt wurde, die die fehlerhaften Spalten filtert und zurückgibt
nan_cols =[i for i in df.columns if df[i].isnull().any()]
In Datasets mit einer großen Anzahl von Spalten ist es noch besser zu sehen, wie viele Spalten Nullwerte enthalten und wie viele nicht.
print("No. of columns containing null values")print(len(df.columns[df.isna().any()]))print("No. of columns not containing null values")print(len(df.columns[df.notna().all()]))print("Total no. of columns in the dataframe")print(len(df.columns))
Zum Beispiel enthielt es in meinem Datenrahmen 82 Spalten, von denen 19 mindestens einen Nullwert enthielten.
Außerdem können Sie Spalten und Zeilen automatisch entfernen, je nachdem, welche mehr Nullwerte haben.
Hier ist der Code, der dies intelligent macht:
df.isna().any()[lambda x: x]
arbeitet für michAntworten:
UPDATE: mit Pandas 0.22.0
Neuere Pandas-Versionen haben neue Methoden 'DataFrame.isna ()' und 'DataFrame.notna ()'
als Liste der Spalten:
um diese Spalten auszuwählen (die mindestens einen
NaN
Wert enthalten):ALTE Antwort:
Versuchen Sie, isnull () zu verwenden :
oder als von @root vorgeschlagene klarere Version:
So wählen Sie eine Teilmenge aus - alle Spalten, die mindestens einen
NaN
Wert enthalten:quelle
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
,notna
?Sie können verwenden
df.isnull().sum()
. Es zeigt alle Spalten und die gesamten NaNs jedes Features.quelle
Ich hatte ein Problem, bei dem ich zu viele Spalten hatte, um sie auf dem Bildschirm visuell zu überprüfen, sodass eine kurze Liste erstellt wurde, die die fehlerhaften Spalten filtert und zurückgibt
wenn das für jemanden hilfreich ist
quelle
In Datasets mit einer großen Anzahl von Spalten ist es noch besser zu sehen, wie viele Spalten Nullwerte enthalten und wie viele nicht.
Zum Beispiel enthielt es in meinem Datenrahmen 82 Spalten, von denen 19 mindestens einen Nullwert enthielten.
Außerdem können Sie Spalten und Zeilen automatisch entfernen, je nachdem, welche mehr Nullwerte haben.
Hier ist der Code, der dies intelligent macht:
Hinweis: Der obige Code entfernt alle Ihre Nullwerte. Wenn Sie Nullwerte möchten, verarbeiten Sie diese zuvor.
quelle
Ich benutze diese drei Codezeilen, um die Spaltennamen auszudrucken, die mindestens einen Nullwert enthalten:
quelle
Beides sollte funktionieren:
DataFrame-Methoden
isna()
oderisnull()
sind völlig identisch.Hinweis : Leere Zeichenfolgen
''
gelten als falsch (nicht als NA betrachtet).quelle
Das hat bei mir funktioniert,
1. Zum Abrufen von Spalten mit mindestens 1 Nullwert. (Spaltennamen)
2. Zum Abrufen von Spalten mit Anzahl mit mindestens 1 Nullwert.
[Optional] 3. Zum Abrufen des Prozentsatzes der Nullanzahl.
quelle