2016-12-16 15 views
1

私はインデックスとしてメンバーIDを持つ顧客データフレームを持っています。個別のカウンティングインデックス

import numpy as np 
import pandas as pd 
df=pd.DataFrame({'Mbr ID':['ID0001','ID0002','ID0003','ID0004'], 
       'Receipts':[3,5,12,5],     
       'Spending':[130,22,313,46], 
       'Grade':['A','B','A','B']    
       }) 
df=df.set_index(['Mbr ID']) 

enter image description here

私はグレードによりデータフレームを分析しようとすると、各学年の中にありますどのように多くのユニークなIDが見たいと思っています。しかし、私は列がインデックスとして使用されるので、Mbr IDのカウントに問題があります。

agg_func={'Customer':pd.Series.nunique,'Receipts':np.sum,'Spending':np.sum} 
df.groupby('Grade').agg(agg_func) 

KeyError: 'Mbr ID'

私は通常、このような状況で何をすべき?

+0

を使用'df = df.set_index(['Mbr ID']、drop = False)' – MMF

答えて

1

多分データフレームから列 `MBR ID`を落としませんか?代わりにlambda

agg_func = { 
    'Grade': lambda s: s.index.nunique(), 
    'Receipts': 'sum', 
    'Spending': 'sum' 
} 
df.groupby('Grade').agg(agg_func).rename(columns={'Grade': 'Customer'}) 

enter image description here