2014-12-04 48 views
1

如何在熊貓羣后對羣進行採樣?假設我想在groupby之後得到前半羣。熊貓:羣后的樣本組

In [194]: df = pd.DataFrame({'name':['john', 'george', 'john','andrew','Daniel','george','andrew','Daniel'], 'hits':[12,34,13,23,53,47,20,48]}) 
In [196]: grouped = df.groupby('name') 

有「約翰」,「喬治」,「安德魯」,「大牛」 4組分組,我感興趣的是得到2組出了4不要緊哪它返回2組。

非常感謝。

回答

2

您可以提前和唯一一組樣品的名稱所選擇的名稱:

selected_names = np.random.choice(df.name.unique(),2,replace = False) 
grouped = df[df.name.isin(selected_names)].groupby('name') 
0

感謝您的快速回復,ajcr和cwharland。我可能不清楚我想要什麼,但是你的建議很好。我所做的:

choices =np.random.choice(grouped.indices.keys(), 2, replace=False) 
df[df['name'].isin(choices)] 

和得到的結果我希望:

Out[215]: 
    hits name 
0 12 john 
2 13 john 
3 23 andrew 
6 20 andrew 

謝謝兩位!

+1

如果這是您想要的輸出,則不需要「groupby」。簡單地做:'selected_names = np.random.choice(df.name.unique(),2,replace = False)''後面跟'df [df.name.isin(selected_names)]' – cwharland 2014-12-05 15:39:21

+0

Good catch @cwharland – BlueFeet 2014-12-05 15:58:05