2017-01-04 91 views
-1

我試圖根據其投資策略隨機選擇一個資金清單。 舉例來說,如果我有以下數據框:根據標準創建隨機選擇的物品清單

FundName /戰略

  • 基金1 /活動家
  • Fund2 /活動家
  • Fund3 /活動家
  • Fund4 /活動家
  • Fund5/Macro
  • Fund6/Macro
  • 基金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

回答

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中選擇。