Pandas: как найти уникальные значения и игнорировать nan


Вы можете определить следующую пользовательскую функцию для поиска уникальных значений pandas и игнорирования значений NaN:

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

Эта функция вернет серию pandas, содержащую все уникальные значения, кроме значений NaN.

В следующих примерах показано, как использовать эту функцию в различных сценариях со следующим DataFrame pandas:

 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() для отображения всех уникальных значений в столбце точек , сгруппированных по столбцу команды :

 #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: как получить уникальные значения из индексного столбца
Панды: как посчитать уникальные комбинации двух столбцов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *