2016-07-15 80 views
7

你怎麼遍歷一個熊貓系列從.groupby('...').size()命令生成,並同時獲得組名和計數。如何循環從GROUPBY產生的熊貓系列()。大小()

正如如果我有一個例子:

foo 
-1  7 
0 85 
1 14 
2  5 

哪能遍歷它們使每個迭代I將具有-1 & 7,0 & 85,1 14 &和2 & 5中的變量?

我試過枚舉選項,但它不太工作。例如:

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

它不爲i而是0,1,2返回-1,0,1,2,3

+0

枚舉只是計算任何序列中的項目數,它對Series的內部索引一無所知,這就是爲什麼它只是0,1,2,3,並且對於任何迭代都是相同的 –

回答

17

更新

給出一個大熊貓系列:

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

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

可以直接通過它循環,從該系列在每個迭代產生一個值:

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

如果你想在同一時間訪問索引,您可以使用itemsiteritems方法,它會生成一個包含兩個指數值發電機:

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 

老答

你可以調用iteritems()方法的系列:

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

# 12 4 
# 14 2 

根據DOC:

Series.iteritems()

懶洋洋遍歷(索引,值)元組

注意:這是不一樣的數據作爲問題,只是一個演示。

+2

這就是我的解決方案尋找 - 謝謝。我曾嘗試'.iterrows()',但它沒有提供我正在尋找的解決方案。 –

+1

'iterrows()'是數據框和Series的方法,'iteritems()'起作用。 – Psidom