2
私は各グループ内の個別のタプルの数をカウントします:つまりCOUNTグループ内のDISTINCT/nunique
df = pd.DataFrame({'a': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'b': [1, 2, 1, 2, 1, 2, 1, 2],
'c': [1, 1, 2, 2, 2, 1, 2, 1]})
counts = count_distinct(df, by='a', columns=['b', 'c'])
assert counts == pd.Series([4, 2], index=['A', 'B'])
、カウントはグループ「A」のために、4つの異なるタプルがあることを報告し、ために必要がありますグループ 'B'には2つあります。
df.groupby('a')['b', 'c'].nunique()
を試しましたが、nunique
は1つの列でのみ動作します。
私はdf.groupby(['b'、 'c'])によって別個のタプルを数えることができると知っていますが、それは純粋なpython関数を使って遅いapply
を使用したことを意味します' は大きい)。
'b'列と 'c'列をタプルの1つの列に変換できますが、ベクトル化された操作を使用しなくなるため、非常に遅くなります。
私は多くの列を持っていましたが、drop_duplicatesに、 '='引数をサブセットを使用することにより、それに対処することができます:あなたのデータフレームと仮定すると列だけ
a
、b
とc
とその逆が含まれています。 – max