2016-04-14 7 views
1

Ich habe einen Datenrahmen:Python (Pandas) - Reset-Index mit Zählung

HH  PERSON SPOT WEIGHT 
    1002141 aa 1  1332.25 
    1011831 ab 1  2083.31 
    1031726 aa 1  2589.09 
    1042819 aa 1  4736.28 
    1043006 aa 1  1588.39 
    1043006 aa 1  1588.39 
    1060911 aa 1  1113.97 
    1001665 aa 2  3202.09 
    1001762 aa 2  2048.54 

Was ich versuche zu tun, um eine Zählspalte alle Vorkommen erstellen, die sich wiederholen, in dem obigen Beispiel Linien 5 und 6 sind die gleichen, so möchte ich die Ausgabe sein wollen:

HH  PERSON SPOT WEIGHT COUNT  
    1002141 aa 1  1332.25  1 
    1011831 ab 1  2083.31  1 
    1031726 aa 1  2589.09  1 
    1042819 aa 1  4736.28  1 
    1043006 aa 1  1588.39  2 
    1060911 aa 1  1113.97  1 
    1001665 aa 2  3202.09  1 
    1001762 aa 2  2048.54  1 

Was ich getan habe ist:

count_table=df.groupby(['HH','PERSON','SPOT ID']).agg(['count']).reset_index() 

Es funktioniert, aber die Indizes werden alle durcheinander gebracht - und sortiert sie nach der HH-Spalte anstatt nach dem ursprünglichen Index.

Irgendwelche Ideen, wie ich die Tabellenindizes zurücksetzen kann?

Antwort

1

Sie können transform dafür verwenden, um eine Zählspalte hinzuzufügen, die nur die Gruppengröße in diesem Fall:

In [164]: 
df['Count'] = df.groupby(['HH','PERSON','SPOT'])['WEIGHT'].transform('size') 
df 

Out[164]: 
     HH PERSON SPOT WEIGHT Count 
0 1002141  aa  1 1332.25  1 
1 1011831  ab  1 2083.31  1 
2 1031726  aa  1 2589.09  1 
3 1042819  aa  1 4736.28  1 
4 1043006  aa  1 1588.39  2 
5 1043006  aa  1 1588.39  2 
6 1060911  aa  1 1113.97  1 
7 1001665  aa  2 3202.09  1 
8 1001762  aa  2 2048.54  1 
+0

Great! Danke! –