为" for"的每次迭代创建新的df列。环

时间:2017-07-23 08:27:57

标签: python pandas yahoo-finance

我正在尝试计算4个不同日期的S& P扇区的diff_chg(在start_return中给出):

start_return = [-30,-91,-182,-365]
for date in start_return:
    diff_chg = closingprices[-1].divide(closingprices[date]) 
    for i in sectors:                                  #Sectors is XLK, XLY , etc                                                          
        diff_chg[i] = diff_chg[sectordict[i]].mean()    #finds the % chg of all sectors
        diff_df = diff_chg.to_frame

我的预期输出是在df中有4列,每列有给定时期内每个扇区的回报(-30,-91,-182,-365。)。

截至目前,当我运行此代码时,它返回diff_df中所有4个句点的返回值之和。我希望它在每个时期的df中创建一个新列。

我的代码返回:

XLK     1.859907
XLI     1.477272
XLF     1.603589
XLE     1.415377
XLB     1.526237

但我希望它返回:

        1mo (-30)        3mo (-61)         6mo (-182)         1yr (-365
XLK     1.086547         values here       etc               etc
XLI     1.0334
XLF     1.07342
XLE     .97829
XLB     1.0281

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

start_return = [-30,-91,-182,-365]
diff_chg = pd.DataFrame()
for date in start_return:
    diff_chg[date] = closingprices[-1].divide(closingprices[date])

这样做可以将每个date in start_return的列添加到开头创建的单个DataFrame