2016-12-16 55 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

也許不從數據框中刪除列'MBR ID'? 'df = df.set_index(['Mbr ID'],drop = False)' – MMF

回答

1

使用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