首页 > 解决方案 > Python Pandas - 采样:限制随机选择的项目数量

问题描述

假设我有一个如下所示的数据框:

id_1 id_2
aa    123 
bb    123 
cc    234
dd    123
ee    678
FF    456
gg   123

如何在id_2列中最多只能有 3 个(或任何其他数量)相同项目的条件下进行抽样?我们不一定需要此列有 3 或 2 个相同的项目(因为它是随机样本,它必须是随机选择),但如果要重复它最多可以是 X 次(由临界点)

说 n=5 和 3 的阈值

id_1 id_2
aa    123  
dd    123
ee    678
FF    456
gg    123

标签: pythonpandassampling

解决方案


import pandas as pd
df = pd.read_clipboard()

def get_sample(df, thresh):
    df1 = df.sample(n=5)
    while df1.id_2.value_counts().max() > thresh:
        print(df1.id_2.value_counts().max())
        df1 = df.sample(n=5)
    return df1

df1 = get_sample(df, 3)

print(df1)

    id_1    id_2
3   dd  123
4   ee  678
5   FF  456
6   gg  123
1   bb  123

推荐阅读