Pandas: so finden sie eindeutige werte und ignorieren nan


Sie können die folgende benutzerdefinierte Funktion definieren, um Pandas nach eindeutigen Werten zu durchsuchen und NaN-Werte zu ignorieren:

 def unique_no_nan(x):
    return x. dropna (). single ()

Diese Funktion gibt eine Pandas-Reihe zurück, die alle eindeutigen Werte außer NaN-Werten enthält.

Die folgenden Beispiele zeigen, wie diese Funktion in verschiedenen Szenarien mit dem folgenden Pandas DataFrame verwendet wird:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavs', 'Mavs', 'Mavs', 'Celtics', 'Celtics', 'Celtics'],
                   ' points ': [95, 95, 100, 113, 100, np.nan]})

#view DataFrame
print (df)

      team points
0 Mavs 95.0
1 Mavs 95.0
2 Mavs 100.0
3 Celtics 113.0
4 Celtics 100.0
5 Celtics NaN

Beispiel 1: Eindeutige Werte in der Pandas-Spalte finden und NaN-Werte ignorieren

Angenommen, wir verwenden die Funktion pandas unique() , um alle eindeutigen Werte in der Punktespalte des DataFrame anzuzeigen:

 #display unique values in 'points' column
df[' points ']. single ()

array([ 95., 100., 113., no])

Beachten Sie, dass die Funktion unique() standardmäßig nan in die Ergebnisse einbezieht.

Nehmen wir jedoch an, wir verwenden stattdessen unsere benutzerdefinierte Funktion unique_no_nan() , um die eindeutigen Werte in der Punktespalte anzuzeigen:

 #display unique values in 'points' column and ignore NaN
unique_no_nan(df[' points '])

array([ 95., 100., 113.])

Unsere Funktion gibt jeden eindeutigen Wert in der Punktespalte zurück, ohne NaN.

Beispiel 2: Finden Sie eindeutige Werte in Pandas Groupby und ignorieren Sie NaN-Werte

Angenommen, wir verwenden die Pandas-Funktionen groupby() und agg() , um alle eindeutigen Werte in der Punktespalte anzuzeigen, gruppiert nach der Teamspalte :

 #display unique values in 'points' column grouped by team
df. groupby (' team ')[' points ']. agg ([' single '])

	unique
team	
Celtics [113.0, 100.0, nah]
Mavs [95.0, 100.0]

Beachten Sie, dass die Funktion unique() standardmäßig nan in die Ergebnisse einbezieht.

Nehmen wir jedoch an, wir verwenden stattdessen unsere benutzerdefinierte Funktion unique_no_nan() , um die eindeutigen Werte in der Punktespalte anzuzeigen, gruppiert nach der Teamspalte :

 #display unique values in 'points' column grouped by team and ignore NaN
df. groupby (' team ')[' points ']. apply ( lambda x: unique_no_nan(x))

team
Celtics [113.0, 100.0]
Mavs [95.0, 100.0]
Name: points, dtype: object

Unsere Funktion gibt jeden eindeutigen Wert in der Punktespalte für jedes Team zurück, ohne NaN-Werte zu zählen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere allgemeine Funktionen in Pandas ausgeführt werden:

Pandas: So wählen Sie einzelne Zeilen in DataFrame aus
Pandas: So erhalten Sie eindeutige Werte aus der Indexspalte
Pandas: So zählen Sie einzigartige Kombinationen aus zwei Spalten

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert