Python 从数据帧中的所有组中抽取样本
如何从一个数据帧内的每个组中抽取一个样本行(比如,随机抽取10%,或者每N行抽取一个样本行) e、 g.从按“名称”分组时开始:Python 从数据帧中的所有组中抽取样本,python,pandas,Python,Pandas,如何从一个数据帧内的每个组中抽取一个样本行(比如,随机抽取10%,或者每N行抽取一个样本行) e、 g.从按“名称”分组时开始: name a b foo 1 1 foo 4 1 foo 3 3 bar 2 1 bar 3 7 bar 4 3 bar 1 2 我想得到这样的东西: name a b foo 4 1 bar 3 7 bar
name a b
foo 1 1
foo 4 1
foo 3 3
bar 2 1
bar 3 7
bar 4 3
bar 1 2
我想得到这样的东西:
name a b
foo 4 1
bar 3 7
bar 1 2
非常感谢您可以使用
groupby
按您的name
列进行分组,然后应用sample
从子组中随机获取样本
首先,让我们看看虚拟数据:
print(df)
name a b
0 foo 1 1
1 foo 4 1
2 foo 3 3
3 bar 2 1
4 bar 3 7
5 bar 4 3
6 bar 1 2
fraction
定义随机样本的百分比。对于小型虚拟数据集,此处将其设置为0.5:
fraction = 0.5
result = df.groupby("name", group_keys=False).apply(lambda x: x.sample(frac=fraction))
print(result)
name a b
3 bar 2 1
6 bar 1 2
0 foo 1 1
2 foo 3 3