2017-12-19 2 views
1

Ich arbeite gerade an einem Projekt, bei dem ich die Aktivität einiger Personen im Laufe der Zeit auf einer Site messen muss, abhängig davon, ob sie eine Site bearbeiten. Ich habe einen Datenrahmen, der in etwa so aussieht:Sequenzielles Zählen von wiederholten Einträgen

df = pd.DataFrame({"x":["a", "b", "c", "b","b"], 
       "y":["red", "blue", "green", "yellow","red"], 
       "z":[1,2,3,4,5]}) 

Ich möchte eine Spalte in die Datenrahmen hinzuzufügen, so dass sie die Anzahl der wiederholten Werte zählt (Anzahl der Bearbeitungen, die Spalte x ist) gibt es, unter Verwendung von Die "z" -Spalte als Maß für den Zeitpunkt, an dem die Ereignisse aufgetreten sind.

z. um eine zusätzliche Spalte von zu haben:

df["activity"] = pd.Series([1,1,1,2,3]) 

Wie würde ich am besten darüber in Python gehen? Ich bin mir nicht sicher, was meine beste Vorgehensweise hier ist.

+0

Suchen Sie 'df.groupby ('x') cumcount() + 1 '? –

+0

'df.groupby ('x'). Cumcount(). Add (1)' – Wen

+0

'mit der Spalte" z "als Maß für den Zeitpunkt der Ereignisse. Was bedeutet das? –

Antwort

1

Frage wurde von Wen und ich zur gleichen Zeit in den Kommentaren beantwortet. Ich fülle die Kommentare zu einer Antwort aus.

Verwenden groupby + cumcount -.

df['activity'] = df.groupby('x').cumcount() + 1 
df 

    x  y z activity 
0 a  red 1   1 
1 b blue 2   1 
2 c green 3   1 
3 b yellow 4   2 
4 b  red 5   3 
Verwandte Themen