Pandas: cara menemukan nilai unik dan mengabaikan nan
Anda dapat menentukan fungsi khusus berikut untuk mencari nilai unik pada panda dan mengabaikan nilai NaN:
def unique_no_nan(x): return x. dropna (). single ()
Fungsi ini akan mengembalikan rangkaian pandas yang berisi setiap nilai unik kecuali nilai NaN.
Contoh berikut menunjukkan cara menggunakan fungsi ini dalam skenario berbeda dengan pandas DataFrame berikut:
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
Contoh 1: Temukan Nilai Unik di Kolom Pandas dan Abaikan Nilai NaN
Misalkan kita menggunakan fungsi pandas Unique() untuk menampilkan semua nilai unik di kolom poin DataFrame:
#display unique values in 'points' column df[' points ']. single () array([ 95., 100., 113., no])
Perhatikan bahwa fungsi unik() menyertakan nan dalam hasil secara default.
Namun, misalkan kita menggunakan fungsi unik_no_nan() khusus untuk menampilkan nilai unik di kolom poin :
#display unique values in 'points' column and ignore NaN unique_no_nan(df[' points ']) array([ 95., 100., 113.])
Fungsi kami mengembalikan setiap nilai unik di kolom poin , tidak termasuk NaN.
Contoh 2: Temukan nilai unik di Pandas Groupby dan abaikan nilai NaN
Misalkan kita menggunakan fungsi pandas groupby() dan agg() untuk menampilkan semua nilai unik di kolom poin , dikelompokkan berdasarkan kolom tim :
#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]
Perhatikan bahwa fungsi unik() menyertakan nan dalam hasil secara default.
Namun, misalkan kita menggunakan fungsi unik_no_nan() khusus untuk menampilkan nilai unik di kolom poin , yang dikelompokkan berdasarkan kolom tim :
#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
Fungsi kami mengembalikan setiap nilai unik di kolom poin untuk setiap tim , tidak termasuk nilai NaN.
Sumber daya tambahan
Tutorial berikut menjelaskan cara menjalankan fungsi umum lainnya di panda:
Pandas: Cara memilih satu baris di DataFrame
Pandas: Cara mendapatkan nilai unik dari kolom indeks
Pandas: cara menghitung kombinasi unik dua kolom