根据优先级对数据帧进行采样

时间:2019-03-08 21:52:26

标签: python pandas

我有一个类似的数据框

import random
import pandas as pd
col1 = random.choices([1,2,3,4,5],k=50)
col2 = random.choices(['A','B','C'],k=50)
df = pd.DataFrame({'values':col1,'priority':col2})

我想抽取25个样本,但是如果25个具有优先级'A',我希望那些25。如果30个具有优先级'A',我希望从30个中选择25个。如果20个具有优先级'A',我想要那20个,从30个中随机选择5个,优先级为“ B”。如果10个优先级为'A',而10个优先级为'B',则我希望所有10个'A'和所有10个'B',以及5个随机的'C'。

我认为做到这一点的唯一方法是将数据集分成3个,然后使用if语句之类

if len(df_A) ==25:
    output = df_A
elif len(df_A) >25:
    output = df_A.sample(n=25)
elif len(df_A) + len(df_B) == 25:
    output = pd.concat([df_A,df_b])

,依此类推。 有一个更好的方法吗?可能会扩展到更多优先级组?

0 个答案:

没有答案