gpt4 book ai didi

基于多种条件的Python随机样本选择

转载 作者:行者123 更新时间:2023-12-04 14:20:46 25 4
gpt4 key购买 nike

我想从以下 df 中在 python 中进行随机样本选择,以便至少 65% 的结果样本应具有黄色,并且所选数量的累积总和小于或等于 18。

原始数据集:

Date        Id      color       qty
02-03-2018 A red 5
03-03-2018 B blue 2
03-03-2018 C green 3
04-03-2018 D yellow 4
04-03-2018 E yellow 7
04-03-2018 G yellow 6
04-03-2018 H orange 8
05-03-2018 I yellow 1
06-03-2018 J yellow 5

我有总数。选定的条件已涵盖但仍停留在如何通过集成 % 条件继续前进:

df2 = df1.sample(n=df1.shape[0])

df3= df2[df2.qty.cumsum() <= 18]

所需数据集:
Date        Id      color       qty
03-03-2018 B blue 2
04-03-2018 D yellow 4
04-03-2018 G yellow 6
06-03-2018 J yellow 5

或者像这样:
Date        Id      color       qty
02-03-2018 A red 5
04-03-2018 D yellow 4
04-03-2018 E yellow 7
05-03-2018 I yellow 1

任何帮助将非常感激!

提前致谢。

最佳答案

  • 使用 'yellow' 过滤行并选择至少占总样本量 65% 的随机样本
    import random
    yellow_size = float(random.randint(65,100)) / 100
    df_yellow = df3[df3['color'] == 'yellow'].sample(yellow_size*sample_size)
  • 过滤具有其他颜色的行,并为剩余的样本大小选择一个随机样本。
    others_size = 1 - yellow_size
    df_others = df3[df3['color'] != 'yellow].sample(others_size*sample_size)
  • 将它们组合起来并洗牌。
    df_sample = pd.concat([df_yellow, df_others]).sample(frac=1)

  • 更新:
    如果您想同时检查两个条件,这可能是一种方法:
    import random

    df_sample = df

    while sum(df_sample['qty']) > 18:
    yellow_size = float(random.randint(65,100)) / 100
    df_yellow = df[df['color'] == 'yellow'].sample(yellow_size*sample_size)
    others_size = 1 - yellow_size
    df_others = df[df['color'] != 'yellow'].sample(others_size*sample_size)
    df_sample = pd.concat([df_yellow, df_others]).sample(frac=1)

    关于基于多种条件的Python随机样本选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55111741/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com