【发布时间】:2021-06-07 11:58:35
【问题描述】:
我有一个数据集,我想在 groupby 之后对其进行采样。一般来说,它可以通过 df.groupby("some_id").sample(n=100) 来实现。但问题是某些组的样本少于 100 个(是的,replace=True 是一种选择,但是如果我们想减少样本怎么办,我的意思是,如果该组的样本超过 100 个,我希望样本量为 100,如果更少 - 保持原样)。我找不到一个实现类似目标的例子,任何想法都值得赞赏。
现在我唯一的想法是忘记 groupby,创建让我们说组列表或类似的东西
groups_list=[]
for i in df.some_id.unique():
groups_list.append(df[df_some_id==i].apply(weird_sampling))
def weird_sampling(df):
if (df.shape[0]>99):
return df.sample(100)
return df
但似乎效率极低
【问题讨论】:
标签: python pandas dataframe pandas-groupby