2016-04-01 4 views
1

Ich bin immer noch in einer Lernphase in Python und wollte wissen, wie wir die Daten und zählte die doppelten Datenzeilen in einer Spalte ZählungRolldatenrahmen nach oben zusammen mit Anzahl der Zeilen in Python

genannt aufrollen können

Die Datenrahmenstruktur wird wie folgt

Col1| Value 
A | 1 
B | 1 
A | 1 
B | 1 
C | 3 
C | 3 
C | 3 
C | 3 

sollte Ihr Ergebnis sein als

Col1|Value|Count 
A | 1 | 2 
B | 1 | 2 
C | 3 | 4 

Antwort

4
>>> df2 = df.groupby(['Col1', 'Value']).size().reset_index() 
>>> df2.columns = ['Col1', 'Value', 'Count'] 
>>> df2 
    Col1 Value Count 
0 A  1  2 
1 B  1  2 
2 C  3  4 
folgt 0
3

Roman Pekars feine Antwort ist für diesen Fall richtig. Ich sah es jedoch, nachdem ich versucht hatte, eine Lösung für den im Text Ihrer Frage angegebenen allgemeinen Fall zu schreiben, nicht nur das Beispiel mit bestimmten Spaltennamen. Also, für den allgemeinen Fall betrachten:

df.groupby([df[c] for c in df.columns]).size().reset_index().rename(columns={0: 'Count'}) 

Zum Beispiel:

import pandas as pd 

df = pd.DataFrame({'Col1': ['a', 'a', 'a', 'b', 'c'], 'Value': [1, 2, 1, 3, 2]}) 

>>> df.groupby([df[c] for c in df.columns]).size().reset_index().rename(columns={0: 'Count'}) 
    Col1 Value Count 
0 a 1 2 
1 a 2 1 
2 b 3 1 
3 c 2 1 
+0

Ich mag 'Umbenennungs (Spalten = {0: 'Count'})' Teil –

+0

Danke, @RomanPekar - ich mochte Deine Antwort auch. –