Pandas の複数の列の一意の値を見つける方法


多くの場合、pandas DataFrame の複数の列にわたってすべての一意の値を検索したい場合があります。幸いなことに、これは、pandas unique()関数とravel()関数を組み合わせて使用することで簡単に実行できます。

  • unique() : 出現順に一意の値を返します。
  • ravel():一連の平坦化されたデータを返します。

たとえば、次の pandas DataFrame があるとします。

 import pandas as pd

#createDataFrame
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 aa 11
1 bc 8
2 this 10
3 df 6
4 eg 6

一意の値の配列を返します

次のコードは、 col1col2で一意の値を検索する方法を示しています。

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

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

結果から、これら 2 つの列に7 つの一意の値があることがわかります: a、b、c、d、e、f、g

一意の値の DataFrame を返す

これらの値を配列ではなく DataFrame として返したい場合は、次のコードを使用できます。

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

p.d. DataFrame (unique)

	0
0 a
1b
2 tbsp
3rd
4 d
5f
6g

一意の値の数を返します

複数の列にわたる一意の値の数を知りたいだけの場合は、次のコードを使用できます。

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

len (unique)
7

これは、これら 2 つの列に7 つの一意の値があることがわかります。

追加リソース

複数の列にまたがる Pandas DataFrame をマージする方法
複数の条件で Pandas DataFrame をフィルタリングする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です