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