如何在pandas中的groupby之后对组进行采样?说我想在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')
有乔恩','乔治',' andrew','丹尼尔' 分组中的4个群组,我有兴趣从4个群组中获取2个群组。它返回的是哪两个群组并不重要。
非常感谢。
答案 0 :(得分:3)
您可以提前对名称进行采样,并仅对所选名称进行分组:
selected_names = np.random.choice(df.name.unique(),2,replace = False)
grouped = df[df.name.isin(selected_names)].groupby('name')
答案 1 :(得分: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
谢谢你们两位!