2016-06-28 7 views
3

私はパンダを使用して、データフレーム内の変数のセットの一意の組み合わせを数えます。私は現在、.groupby()関数を使用していますが、私はその機能の一部が欠けていると思います。パンダのデータフレーム内のユニークな変数の組み合わせをカウントするには

例コード:

import pandas 
df = pd.DataFrame([['A','C','G'], 
        ['A','C','H'], 
        ['A','D','G'], 
        ['A','D','H'], 
        ['B','E','I'], 
        ['B','F','I']], columns=['a','b','c']) 
df 

    a b c 
0 A C G 
1 A C H 
2 A D G 
3 A D H 
4 B E I 
5 B F I 

は、すべてのユニークな値のために、それがどのように多くの異なるBさんを持っています、私が知りたいと言いますか?この例では、Aは2つの一意のb値を持ち、Bは2つの一意のb値を持つため、目的の出力はA:2、B:2です。

私はごとに一意のCさんをカウントしていた場合、私が期待する:2、B:1

私の現在のコードは次のとおりです。

df.groupby(['a','b'],as_index=False).count().groupby(['a'], as_index=False).count()[['a','b']] 

    a b 
0 A 2 
1 B 2 

df.groupby(['a','c'], as_index=False).count().groupby(['a'],as_index=False).count()[['a','c']] 

    a c 
0 A 2 
1 B 1 

これは私に正しい結果を与えますが、私groupby()とcount()の2つのセットを避ける方法があるはずだと思いますか?

答えて

7

nunique

df.groupby('a')['b'].nunique() 
Out[36]: 
a 
A 2 
B 2 
Name: b, dtype: int64 
+0

これはまさに私が探していたものです。 –

関連する問題