Sie duplicated
mit dem Parameter keep=False
für die Rück Maske aller Duplikate verwenden - 2 und mehr TICKET
Werte, Filter durch boolean indexing
, wählen Sie dann durch loc
Spalte Client
und Werte erhalten, indem diese Maske:
print (df.TICKET.duplicated(keep=False))
0 False
1 False
2 True
3 True
4 True
5 False
6 True
7 True
8 False
9 True
10 True
11 True
12 True
Name: TICKET, dtype: bool
print (df.loc[df.TICKET.duplicated(keep=False), 'Client'])
2 14613
3 36735
4 43733
6 24456
7 27919
9 14613
10 31725
11 37547
12 43733
Name: Client, dtype: int64
Dann value_counts
und Filter durch boolean indexing
ggf. Filter wieder:
s = df.loc[df.TICKET.duplicated(keep=False), 'Client'].value_counts()
print (s)
43733 2
14613 2
36735 1
31725 1
37547 1
24456 1
27919 1
Name: Client, dtype: int64
print (s[s > 1])
43733 2
14613 2
Name: Client, dtype: int64
Last bei Bedarf Add reset_index
für convert Series
zu DataFrame
:
df1 = s[s > 1].reset_index()
df1.columns = ['Client','Count']
print (df1)
Client Count
0 43733 2
1 14613 2
Lösung mit filtration
ist slowier:
s = df.groupby('TICKET').filter(lambda x: len(x) > 1)['Client'].value_counts()
print (s)
43733 2
14613 2
36735 1
31725 1
37547 1
24456 1
27919 1
Name: Client, dtype: int64
In [46]: %timeit (df.loc[df.TICKET.duplicated(keep=False), 'Client'].value_counts())
1000 loops, best of 3: 769 µs per loop
In [47]: %timeit (df.groupby('TICKET').filter(lambda x: len(x) > 1)['Client'].value_counts())
100 loops, best of 3: 2.55 ms per loop
#[1300000 rows x 2 columns]
df = pd.concat([df]*100000).reset_index(drop=True)
#print (df)
In [53]: %timeit (df.loc[df.TICKET.duplicated(keep=False), 'Client'].value_counts())
10 loops, best of 3: 54.8 ms per loop
In [54]: %timeit (df.groupby('TICKET').filter(lambda x: len(x) > 1)['Client'].value_counts())
1 loop, best of 3: 282 ms per loop
Hummm .. In der Tat möchte ich die Vorfälle zwischen zwei Kunden zählen. Wie im Bildbeispiel (https://i.stack.imgur.com/PMWay.png) erschienen die Clients 14613 und 43733 in zwei TICKETS zur gleichen Zeit in zwei Fällen. – EnigmA