2016-07-15 3 views
7

.groupby('...').size()コマンドから生成されたPandasシリーズをどのように反復処理し、グループ名とカウントを取得しますか?私がしている場合の例としてgroupby()から生成されたPandas Seriesを反復する方法size()

foo 
-1  7 
0 85 
1 14 
2  5 

をどうすればよいので、それらをループ各反復は、私が持っているであろうこと-1 & 7,0 & 85、1 & 14及び2 & 5変数内を?

私は列挙型オプションを試しましたが、それはうまくいきません。例:

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

それは

+0

列挙型は、系列の内部インデックスについては何も分かっていないので、それはちょうど0,1,2,3のいずれかであり、任意の反復可能で同じである理由は何も分かりません –

答えて

17

iために-1、0、1、および2を返すのではなく0、1、2、3はありませんアップデート:パンダ考える

シリーズ:

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 

あなたが同時にインデックスにアクセスしたい場合は、インデックスと値の両方が含まれている発電機を生産itemsまたはiteritems方法、のいずれかを使用することができます

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()の方法は、シリーズの

に電話することができますDOCによれば
for i, row in df.groupby('a').size().iteritems(): 
    print(i, row) 

# 12 4 
# 14 2 

Series.iteritems()

怠惰(インデックス値)

注タプル反復処理:これはと同じデータでありません質問、ちょうどデモ。

+2

それは私の解決策です探している - ありがとう。私は '.iterrows()'を試みましたが、私が探していた解決法を提供していませんでした。 –

+1

'iterrows()'はデータフレームのメソッドであり、Seriesでは 'iteritems()'が動作します。 – Psidom

関連する問題