根据条件创建随机选择的项目列表
Create list of randomly selected items based on criteria
我正在尝试根据他们的投资策略随机 select 一份基金列表。
例如,如果我有以下数据框:
FundName/Strategy
- Fund1/Activist
- Fund2/Activist
- Fund3/Activist
- Fund4/Activist
- Fund5/Macro
- Fund6/Macro
- Fund7/Macro
我想从每个策略类别中随机 select 2 只基金。我有18种策略和数千只基金。
我尝试了以下方法:
Strategylist={'Activist', 'Macro'}
for x in Strategylist:
np.random.choice(df[df.loc[:,'Strategy']==x].FundName,2,replace=False)
理想情况下,每个策略的基金数量 select 是灵活的。例如,如果我们 select:
Strategy/of 资金
- Activist/2
- Macro/1
然后每次,我 运行 循环我会得到一个独特的随机 select ion of funds with 2 random activity funds and 1 random macro funds such as Fund1, Fund3, Fund6
设置代码
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
到 select。
我正在尝试根据他们的投资策略随机 select 一份基金列表。 例如,如果我有以下数据框:
FundName/Strategy
- Fund1/Activist
- Fund2/Activist
- Fund3/Activist
- Fund4/Activist
- Fund5/Macro
- Fund6/Macro
- Fund7/Macro
我想从每个策略类别中随机 select 2 只基金。我有18种策略和数千只基金。
我尝试了以下方法:
Strategylist={'Activist', 'Macro'}
for x in Strategylist:
np.random.choice(df[df.loc[:,'Strategy']==x].FundName,2,replace=False)
理想情况下,每个策略的基金数量 select 是灵活的。例如,如果我们 select:
Strategy/of 资金
- Activist/2
- Macro/1
然后每次,我 运行 循环我会得到一个独特的随机 select ion of funds with 2 random activity funds and 1 random macro funds such as Fund1, Fund3, Fund6
设置代码
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
到 select。