2017-02-14 91 views
1

我有一個像大熊貓組通過,過濾和聚集

import pandas as pd 
import numpy as np 
d = {'id':[1,2,3,4,3,3,1,6], 'type':['t2','t1','t2','t2','t3','t3','t4','t3']} 
df = pd.DataFrame(data=d) 

一個數據幀的目標是獲得由ID分組並且每個組的每個類型的nunique一個數據幀。

我認爲這將解決它,但它似乎不工作:

df.groupby('id').agg({'type':pd.Series.nunique()}) 
+1

從'nunique'中刪除'()',因爲您想傳遞函數的引用,而不是調用它。 'df.groupby(by ='id').agag(pd.Series.nunique)'將會訣竅。 – dnswlt

+0

謝謝@dnswlt - 我是新人,這很簡單。 – SteelyDanish

回答

2

您可以只訪問type SeriesGroupBy第一多一點簡單地做到這一點。

>>> df.groupby('id').type.nunique() 
id 
1 2 
2 1 
3 2 
4 1 
6 1 

正如在評論中提到的那樣,你有你的nunique()目前的方法是行不通的agg需要一個函數對象,它可以調用(nunique),不是一個實際的函數調用的嘗試。