Pandy: jak znaleźć unikalne wartości i zignorować nan
Możesz zdefiniować następującą funkcję niestandardową, aby wyszukiwać pandy pod kątem unikalnych wartości i ignorować wartości NaN:
def unique_no_nan(x): return x. dropna (). single ()
Ta funkcja zwróci serię pand zawierającą wszystkie unikalne wartości z wyjątkiem wartości NaN.
Poniższe przykłady pokazują, jak używać tej funkcji w różnych scenariuszach z następującą ramką DataFrame pand:
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
Przykład 1: Znajdź unikalne wartości w kolumnie Pandy i zignoruj wartości NaN
Załóżmy, że użyjemy funkcji pandas Unique() do wyświetlenia wszystkich unikalnych wartości w kolumnie punktów DataFrame:
#display unique values in 'points' column df[' points ']. single () array([ 95., 100., 113., no])
Należy pamiętać, że funkcja Unique() domyślnie uwzględnia w wynikach nan .
Załóżmy jednak, że zamiast tego użyjemy naszej niestandardowej funkcji Unique_no_nan() do wyświetlenia unikalnych wartości w kolumnie punktów :
#display unique values in 'points' column and ignore NaN unique_no_nan(df[' points ']) array([ 95., 100., 113.])
Nasza funkcja zwraca każdą unikalną wartość w kolumnie punktów , nie licząc NaN.
Przykład 2: Znajdź unikalne wartości w Pandas Groupby i zignoruj wartości NaN
Załóżmy, że użyjemy funkcji pand groupby() i agg() do wyświetlenia wszystkich unikalnych wartości w kolumnie punktów , pogrupowanych według kolumny zespołu :
#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]
Należy pamiętać, że funkcja Unique() domyślnie uwzględnia w wynikach nan .
Załóżmy jednak, że zamiast tego użyjemy naszej niestandardowej funkcji Unique_no_nan() do wyświetlenia unikalnych wartości w kolumnie punktów , pogrupowanych według kolumny zespołu :
#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
Nasza funkcja zwraca każdą unikalną wartość w kolumnie punktów dla każdej drużyny , nie licząc wartości NaN.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje w pandach:
Pandy: Jak wybrać pojedyncze wiersze w DataFrame
Pandy: Jak uzyskać unikalne wartości z kolumny indeksu
Pandy: jak liczyć unikalne kombinacje dwóch kolumn