根据条件创建随机选择的项目列表

时间:2017-01-04 20:05:51

标签: python loops for-loop random selection

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

FundName /策略

  • Fund1 / Activist
  • Fund2 / Activist
  • Fund3 / Activist
  • Fund4 /积极分子
  • Fund5 / Macro
  • Fund6 / Macro
  • Fund7 / Macro

我想从每个策略类别中随机选择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

1 个答案:

答案 0 :(得分: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中选择。