2017-09-14 3 views
1

私が最初にcによってグループにあるパンダのデータフレーム内のグループの重複を識別するためのより良い方法は?

c x duplicated 
0 1 0  False 
1 2 3  False 
2 1 1  False 
3 1 2  True 
4 1 3  True 
5 1 4  False 
6 0 1  False 
7 1 3  True 
8 1 2  True 
9 2 1  False 

を生成するために好きで、グループ内のすべての重複行をマークしますデータフレーム

x c 
0 0 1 
1 3 2 
2 1 1 
3 2 1 
4 3 1 
5 4 1 
6 1 0 
7 3 1 
8 2 1 
9 1 2 

を持っています。

私の現在のアプローチは

c = np.random.randint(0, 3, 10) 
x = np.random.randint(0, 5, 10) 
d = pd.DataFrame({'x': x, 'c': c}) 
d['duplicated'] = d.groupby('c').apply(
    lambda x: x.duplicated(keep=False) 
).reset_index(level=0, drop=True) 

任意のより良い方法はありますか? -

+0

@jezrael代わりの再開を、右の重複を見つけて、はい、今それはOKですリスト –

+0

を編集します。 – jezrael

答えて

2

のみを使用しduplicatedデフォルトでは、すべての列を確認します

d['duplicated'] = d.duplicated(keep=False) 
print (d) 
    x c duplicated 
0 0 1  False 
1 3 2  False 
2 1 1  False 
3 2 1  True 
4 3 1  True 
5 4 1  False 
6 1 0  False 
7 3 1  True 
8 2 1  True 
9 1 2  False 

d['duplicated'] = d.duplicated(subset=['c','x'],keep=False) 
print (d) 
    x c duplicated 
0 0 1  False 
1 3 2  False 
2 1 1  False 
3 2 1  True 
4 3 1  True 
5 4 1  False 
6 1 0  False 
7 3 1  True 
8 2 1  True 
9 1 2  False 
関連する問題