Как найти уникальные значения в нескольких столбцах в Pandas


Часто вам может быть интересно найти все уникальные значения в нескольких столбцах в кадре данных pandas. К счастью, это легко сделать с помощью функции pandas unique() в сочетании с функцией ravel() :

  • unique() : возвращает уникальные значения в порядке появления.
  • ravel(): возвращает сглаженный ряд данных.

Например, предположим, что у нас есть следующий кадр данных pandas:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd', 'e'],
 'col2': ['a', 'c', 'e', 'f', 'g'],
 'col3': [11, 8, 10, 6, 6]})

#view DataFrame 
print(df)

 col1 col2 col3
0 a a 11
1 b c 8
2 c e 10
3 d f 6
4 e g 6

Возврат массива уникальных значений

Следующий код показывает, как найти уникальные значения в столбцах col1 и col2 :

pd.unique(df[['col1', 'col2']]. values.ravel ())

array(['a', 'b', 'c', 'e', 'd', 'f', 'g'], dtype=object)

Из вывода мы видим, что в этих двух столбцах есть 7 уникальных значений: a, b, c, d, e, f, g .

Возвратите DataFrame уникальных значений

Если вы хотите вернуть эти значения в виде DataFrame вместо массива, вы можете использовать следующий код:

uniques = pd.unique(df[['col1', 'col2']]. values.ravel ())

pd.DataFrame(uniques)

 0
0 a
1 b
2 c
3 e
4 d
5 f
6 g

Возвращает количество уникальных значений

Если вы просто хотите узнать количество уникальных значений в нескольких столбцах, вы можете использовать следующий код:

uniques = pd.unique(df[['col1', 'col2']]. values.ravel ())

len (uniques)
7

Это говорит нам о том, что в этих двух столбцах есть 7 уникальных значений.

Дополнительные ресурсы

Как объединить Pandas DataFrames в несколько столбцов
Как фильтровать кадр данных Pandas по нескольким условиям

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.