Antworten:
Sie können die Zeilen wie folgt zählen:
test_df.apply(lambda x: x.count(), axis=1)
test_df:
A B C
0: 1 1 3
1: 2 nan nan
2: nan nan nan
Ausgabe:
0: 3
1: 1
2: 0
Sie können das Ergebnis wie folgt hinzufügen:
test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)
Ergebnis:
A B C full_count
0: 1 1 3 3
1: 2 nan nan 1
2: nan nan nan 0
Wenn Pandas verwenden, versuchen Sie das Ausführen von Operationen in einer Schleife zu vermeiden, einschließlich apply, map, applymapetc. Das ist langsam!
Wenn Sie die fehlenden Werte in jeder Spalte zählen möchten, versuchen Sie:
df.isnull().sum() oder df.isnull().sum(axis=0)
Auf der anderen Seite können Sie in jeder Zeile (was Ihre Frage ist) zählen durch:
df.isnull().sum(axis=1)
Es ist ungefähr zehnmal schneller als die Lösung von Jan van der Vegt (übrigens zählt er gültige Werte anstatt fehlende Werte):
In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop
In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop
Sie können auch einfach die Info-Methode für Datenrahmenobjekte verwenden:
df.info()
Dies gibt die Anzahl der Nicht-Null-Werte für jede Spalte an.
Nullwerte entlang der Spalte,
df.isnull().sum(axis=0)
leere Werte entlang der Spalte,
c = (df == '').sum(axis=0)
Nullwerte entlang der Zeile,
df.isnull().sum(axis=1)
leere Werte entlang der Zeile,
c = (df == '').sum(axis=1)
>>> df = pd.DataFrame([[1, 2, np.nan],
... [np.nan, 3, 4],
... [1, 2, 3]])
>>> df
0 1 2
0 1 2 NaN
1 NaN 3 4
2 1 2 3
>>> df.count(axis=1)
0 2
1 2
2 3
dtype: int64
Dieses Snippet gibt einen ganzzahligen Wert der Gesamtzahl der Spalten mit fehlendem Wert zurück:
(df.isnull().sum() > 0).astype(np.int64).sum()