Pandas groupby sample

frac = .3
df.groupby('b').apply(pd.DataFrame.sample, frac=.3)
     a  b
b        
0 6  7  0
1 0  1  1
df.groupby('b', group_keys=False).apply(pd.DataFrame.sample, frac=.3)

   a  b
6  7  0
2  3  1

其他方法:先shuffle,再groupby,然后head

df.sample(frac=1).groupby('b').head(2)

   a  b
2  3  1
5  6  0
1  2  1
4  5  0

以上代码等价于df.groupby('b', group_keys=False).apply(pd.DataFrame.sample, n=N)

posted @ 2020-04-13 21:19  2021年的顺遂平安君  阅读(92)  评论(0编辑  收藏  举报