2017-01-11 1 views
3

Ich habe folgende Dataframe:Zählvorkommen mit Dataframe?

   fk name 
0    105 Coca-Cola1 
1    105 Coca-Cola1 
2    106 Coca-Cola2 
3    115 Coca-Cola5 
4    115 Coca-Cola5 
5    115 Coca-Cola5 
6    108 Coca-Cola8 
7    105 Coca-Cola1 

I Häufigkeit des Auftretens zählen möchten:

[[105, Coca-Cola1, 3], 
[106, Coca-Cola2, 1], 
[115, Coca-Cola5, 3], 
[108, Coca-Cola8, 1]] 

Jede Idee, wie so zu bekommen?

Antwort

6

können Sie groupby verwenden mit size aggregieren, dann reset_index und letzte Konvertit numpy array von DataFrame.values mit numpy.ndarray.tolist:

df = df.groupby(['fk','name']).size().reset_index().values.tolist() 
print (df) 
[[105, 'Coca-Cola1', 3], 
[106, 'Coca-Cola2', 1], 
[108, 'Coca-Cola8', 1], 
[115, 'Coca-Cola5', 3]] 

Iforder wichtige Zusatzparameter sort=False-groupby ist:

df = df.groupby(['fk','name'], sort=False).size().reset_index().values.tolist() 
print (df) 
[[105, 'Coca-Cola1', 3], 
[106, 'Coca-Cola2', 1], 
[115, 'Coca-Cola5', 3], 
[108, 'Coca-Cola8', 1]] 
+0

eine triviale Änderung - 'sort = False', um die Reihenfolge beizubehalten. –

+0

@NickilMaveli - Danke. – jezrael