2016-07-15 147 views
7

Come si esegue iterazione su una serie Pandas generata da un comando .groupby('...').size() e si ottiene sia il nome del gruppo che il conteggio.Come eseguire iterazioni su serie Pandas generate da groupby(). Size()

Ad esempio se devo:

foo 
-1  7 
0 85 
1 14 
2  5 

come posso anello su di loro in modo che ogni iterazione l'avrei -1 & 7, 0 & 85, 1 & 14 e 2 & 5 nelle variabili ?

Ho provato l'opzione enumerate ma non funziona. Esempio:

for i, row in enumerate(df.groupby(['foo']).size()): 
    print(i, row) 

non ritorna -1, 0, 1, e 2 per i ma 0, 1, 2, 3.

+0

enumerate calcola solo il numero di elementi in qualsiasi sequenza, non sa nulla sull'indice interno di Serie, è per questo che è solo 0, 1, 2, 3 e sarà lo stesso per qualsiasi iterabile –

risposta

17

Aggiornamento:

dato un panda serie:

s = pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd']) 

s 
#a 1 
#b 2 
#c 3 
#d 4 
#dtype: int64 

è possibile direttamente ciclo attraverso di essa, che produrrà una valore della serie in ogni iterazione:

for i in s: 
    print(i) 
1 
2 
3 
4 

Se si desidera accedere l'indice, allo stesso tempo, è possibile utilizzare sia items o iteritems metodo, che produce un generatore che contiene sia l'indice e il valore:

for i, v in s.items(): 
    print('index: ', i, 'value: ', v) 
#index: a value: 1 
#index: b value: 2 
#index: c value: 3 
#index: d value: 4 

for i, v in s.iteritems(): 
    print('index: ', i, 'value: ', v) 
#index: a value: 1 
#index: b value: 2 
#index: c value: 3 
#index: d value: 4 

vecchio risposta:

È possibile chiamare il metodo iteritems() sulla Serie:

for i, row in df.groupby('a').size().iteritems(): 
    print(i, row) 

# 12 4 
# 14 2 

Secondo doc:

Series.iteritems()

Lazily iterare (index, value) tuple

Nota: Questo non è gli stessi dati in domanda, solo una demo.

+2

Questa è la soluzione che ero cercando - grazie. Avevo provato '.iterrows()' ma non forniva la soluzione che stavo cercando. –

+1

'iterrows()' è il metodo per il frame di dati e per Series, 'iteritems()' funziona. – Psidom