首页 > 解决方案 > 基于列中的值的示例 Pandas 数据框

问题描述

我有一个大数据框,我想根据target列值上的值进行采样,它是二进制的:0/1

我想在“目标”列中提取相同数量的具有 0 和 1 的行。我正在考虑使用 pandas 采样函数,但不确定如何根据target列从两个类中声明我想要的相同数量的样本用于数据帧。

我正在考虑使用这样的东西:

df.sample(n=10000, weights='target', random_state=1)

不知道如何编辑它以获得 10k 记录,列中有 5k1's和 5k 。任何帮助表示赞赏!0'starget

标签: pandasdataframe

解决方案


您可以按目标对数据进行分组,然后进行采样,

df = pd.DataFrame({'col':np.random.randn(12000), 'target':np.random.randint(low = 0, high = 2, size=12000)})
new_df = df.groupby('target').apply(lambda x: x.sample(n=5000)).reset_index(drop = True)

new_df.target.value_counts()

1    5000
0    5000

推荐阅读