2011-12-09 108 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)

相关问题