2011-12-09 112 views
1

我使用python的map()函數將參數傳遞給交易模型並輸出結果。我使用itertools.product來查找這兩個參數的所有可能組合,然後將組合傳遞給名爲「run」的函數。函數run返回一個返回的pandas數據框。列標題是兩個參數和返回的夏普比率的元組。請看下圖:將Python map()函數輸出到Pandas DataFrame中

def run((x,y)): 
    ENTRYMULT = x 
    PXITR1PERIOD = y 

    create_trade() 
    pull_settings()  
    pull_marketdata() 
    create_position() 
    create_pnl_output() 

    return DataFrame(DF3['NETPNL'].values, index=DF3.index, columns=[(ENTRYMULT,PXITR1PERIOD,SHARPE)]) 

我的main()函數使用泳池()功能可以在所有8個內核運行圖():

if __name__ == '__main__':  
global DF3 
pool = Pool()  
test1 =pool.map(run,list(itertools.product([x * 0.1 for x in range(10,12)], range(100,176,25)))) 
print test1 

我實現了地圖功能只能輸出列表。輸出是從返回的數據框的標題的列表,從打印test1的我看起來就像這樣:

[(1.0, 150, -8.5010673966997263) 
2011-11-17 18.63       
2011-11-18 17.86       
2011-11-21 17.01       
2011-11-22 15.92       
2011-11-23 15.56       
2011-11-24 15.56       
2011-11-25 15.36       
2011-11-28 15.18       
2011-11-29 15.84       
2011-11-30 NaN       ,    (1.0, 175, -9.4016837593189102) 
2011-11-17 22.63       
2011-11-18 22.03       
2011-11-21 21.36       
2011-11-22 19.93       
2011-11-23 19.77       
2011-11-24 19.77       
2011-11-25 19.68       
2011-11-28 19.16       
2011-11-29 19.56       
2011-11-30 NaN       ,    (1.1, 100, -20.255968672741457) 
2011-11-17 12.03       
2011-11-18 10.95       
2011-11-21 10.03       
2011-11-22 9.003       
2011-11-23 8.221       
2011-11-24 8.221       
2011-11-25 7.903       
2011-11-28 7.709       
2011-11-29 6.444       
2011-11-30 NaN       ,    (1.1, 125, -18.178187305758119) 
2011-11-17 14.64       
2011-11-18 13.76       
2011-11-21 12.89       
2011-11-22 11.85       
2011-11-23 11.34       
2011-11-24 11.34       
2011-11-25 11.16       
2011-11-28 11.06       
2011-11-29 10.14       
2011-11-30 NaN       ,    (1.1, 150, -14.486791104380069) 
2011-11-17 26.25       
2011-11-18 25.57       
2011-11-21 24.76       
2011-11-22 23.74       
2011-11-23 23.48       
2011-11-24 23.48       
2011-11-25 23.43       
2011-11-28 23.38       
2011-11-29 22.93       
2011-11-30 NaN       ,    (1.1, 175, -12.118290962161304) 
2011-11-17 24.66       
2011-11-18 24.21       
2011-11-21 23.57       
2011-11-22 22.14       
2011-11-23 22.06       
2011-11-24 22.06       
2011-11-25 22.11       
2011-11-28 21.64       
2011-11-29 21.24       
2011-11-30 NaN       ] 

我的最終目標是有索引的熊貓數據框(同樣爲所有退貨)的列標題(ENTRYMULT,PXITR1PERIOD,SHARPE)以及相應的回報如下。然後,我將對所有的收益系列進行成對相關計算。

回答

4

我認爲,所有你需要做的是:

data = DataFrame(dict(test1))

,這將導致一個數據幀的列是像 元素(1.1,175,-12.118290962161304)

在熊貓0.6 .1(即將發佈)你也可以這樣做:

data = DataFrame.from_items(test1)

相關問題