首页 > 解决方案 > 仅获取带有 Pandas 的 DataFrame 样本

问题描述

我有一个 DataFrame,它有两列contenttarget. DataFrame 有 1.000.000 行长,这是目标的分布:

我需要在 DataFrame 中获得相同数量的目标值,所以我sample()只使用固定数量的具有目标 o 的行x,这是我正在使用的代码:

samples = 100000
dataset[dataset['target'] == 0] = dataset[dataset['target'] == 0].sample(n=samples, axis=0)
dataset[dataset['target'] == 1] = dataset[dataset['target'] == 1].sample(n=samples, axis=0)
dataset[dataset['target'] == 2] = dataset[dataset['target'] == 2].sample(n=samples, axis=0)

例如,如果在执行后我访问dataset[dataset['target'] == 2]它,它将返回 (100000, 2) 的形状,但访问dataset只返回与以前完全相同的数据集,我做错了什么?

标签: pythonpython-3.xpandasdataframedataset

解决方案


由于您在每个中采样的样本较少Target,因此您可以使用groupby().sample

# random_state for repeatability. Remove if needed
dataset = dataset.groupby('target').sample(n=samples, random_state=42)

推荐阅读