2016-05-22 13 views
0

Ich habe Probleme beim Erstellen einer Funktion, die die Werte aus einer Spalte in einem Datenframe nehmen und einen Zähler für jedes einzelne Ereignis behalten kann.Zähler für viele verschiedene Werte in Datenrahmenspalte

Ich möchte die Spalte Cnt aus der Säule Col.

Col Cnt 
A 1 
B 1 
A 2 
C 1 
B 2 
A 3 
C 2 

Mein Hauptproblem ist, halten Sie den Wert jedes Zählers erzeugen (der Zähler für A, B, für C, ...), weil die Kardinalität ist ziemlich hoch (Tausende von verschiedenen Werten und einige fast 3 Millionen Datensätze). Ich dachte, als letzte Ressource die folgenden:

1 - Anwenden .unique() auf die Spalte und speichert diese Reihe in einer Variablen var;

2 - Gehen Sie durch alle Zeilen des Datenrahmens, indem Sie Folgendes anwenden: IF df.col = var.VALUE1, cnt = cnt + 1;

3 - Alle Werte der Serie durchlaufen.

Ich hatte gehofft, wenn es eine Funktion/Möglichkeit gibt, die es mir erlauben, diese Operation ein bisschen effizienter durchzuführen.

Danke!

Antwort

2

Wenn ich das richtig verstanden,

df["Cnt"] = df.groupby("Col").cumcount() + 1 

df 
Out[29]: 
    Col Cnt 
0 A 1 
1 B 1 
2 A 2 
3 C 1 
4 B 2 
5 A 3 
6 C 2 
+0

Vielen Dank, das ist perfekt !!! – mik

Verwandte Themen