我正在尝试根据他们的投资策略随机选择一个基金清单。 例如,如果我有以下数据帧:
FundName /策略
我想从每个策略类别中随机选择2个基金。我有18个策略和数千个基金。
我尝试了以下内容:
Strategylist={'Activist', 'Macro'}
for x in Strategylist:
np.random.choice(df[df.loc[:,'Strategy']==x].FundName,2,replace=False)
理想情况下,从每项策略中选择的基金数量都是灵活的。例如,如果我们选择:
战略/资金
然后每次,我运行循环我将得到一个独特的随机选择的基金与2个随机激进基金和1个随机宏观基金,如Fund1,Fund3,Fund6
答案 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
中选择。