【问题标题】:Create list of randomly selected items based on criteria根据标准创建随机选择的项目列表
【发布时间】:2017-01-06 05:13:18
【问题描述】:

我正在尝试根据他们的投资策略随机选择一组基金。 例如,如果我有以下数据框:

基金名称/策略

  • 基金1/活动家
  • 基金2/活动家
  • 基金3/活动家
  • 基金4/活动家
  • 基金5/宏
  • 基金6/宏
  • 基金7/宏

我想从每个策略类别中随机选择 2 只基金。我有 18 种策略和数千笔资金。

我尝试了以下方法:

 Strategylist={'Activist', 'Macro'}

 for x in Strategylist:
     np.random.choice(df[df.loc[:,'Strategy']==x].FundName,2,replace=False)

理想情况下,从每个策略中选择的基金数量是灵活的。例如,如果我们选择:

策略/资金

  • 活动家/2
  • 宏/1

然后每次运行循环,我都会得到一个独特的随机选择基金,其中包含 2 个随机激进基金和 1 个随机宏观基金,例如 Fund1、Fund3、Fund6

【问题讨论】:

    标签: python loops for-loop random selection


    【解决方案1】:

    设置代码

    funds = ["Fund{}".format(i+1) for i in range(7)]
    strategies = ['Activist']*4 + ['Macro']*3
    df = pd.DataFrame(list(zip(funds, strat)), columns=('FundName', 'Strategy'))
    

    您可以从数据框中获取策略列表

    all_strategies = set(df['Strategy'])
    

    然后您可以获得与给定策略匹配的所有基金名称,如下所示:

    my_fund_names = df[df['Strategy']=='Activist']['FundName'].values
    

    就像您的问题一样,您可以使用 np.random.choice 从 my_fund_names 中进行选择。

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2021-04-24
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多