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)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步