Pandas: як знайти унікальні значення і ігнорувати nan
Ви можете визначити наступну спеціальну функцію для пошуку унікальних значень у пандах і ігнорування значень NaN:
def unique_no_nan(x): return x. dropna (). single ()
Ця функція поверне серію pandas, яка містить усі унікальні значення, крім значень NaN.
У наведених нижче прикладах показано, як використовувати цю функцію в різних сценаріях із такими pandas DataFrame:
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
Приклад 1: знайдіть унікальні значення в стовпці Pandas і ігноруйте значення NaN
Припустимо, ми використовуємо функцію pandas unique() для відображення всіх унікальних значень у стовпці точок DataFrame:
#display unique values in 'points' column df[' points ']. single () array([ 95., 100., 113., no])
Зауважте, що функція unique() включає nan у результати за замовчуванням.
Однак припустімо, що замість цього ми використовуємо нашу спеціальну функцію unique_no_nan() для відображення унікальних значень у стовпці балів :
#display unique values in 'points' column and ignore NaN unique_no_nan(df[' points ']) array([ 95., 100., 113.])
Наша функція повертає кожне унікальне значення в стовпці балів , за винятком NaN.
Приклад 2: знайдіть унікальні значення в Pandas Groupby і ігноруйте значення NaN
Припустимо, ми використовуємо функції pandas groupby() і agg() для відображення всіх унікальних значень у стовпці балів , згрупованих за стовпцем team :
#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]
Зауважте, що функція unique() включає nan у результати за замовчуванням.
Однак припустімо, що замість цього ми використовуємо нашу спеціальну функцію unique_no_nan() для відображення унікальних значень у стовпці балів , згрупованих за стовпцем команди :
#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
Наша функція повертає кожне унікальне значення в стовпці очок для кожної команди , не враховуючи значення NaN.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові функції в pandas:
Pandas: Як вибрати окремі рядки в DataFrame
Pandas: Як отримати унікальні значення зі стовпця індексу
Панди: як підрахувати унікальні комбінації двох стовпців