2014-12-04 57 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