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
, applymap
etc. 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()