将数据框索引更改为整数

时间:2015-07-02 20:51:33

标签: python pandas

我有一个名为rollTestLogReturnsData的数据框,它按日期索引

                      BBG.KABN.S      BBG.TKA.S       BBG.CON.S        BBG.ISAT.S  
   date
   2015-02-17        -0.005821       -0.016792       -0.016111         0.001028   
   2015-02-18         0.000588        0.019169       -0.000307        -0.001832   
   2015-02-19         0.005041       -0.007580        0.004164         0.003923   
   2015-02-20        -0.004881        0.008011        0.007047        -0.000307   
   2015-02-23         0.007468       -0.011277       -0.003273         0.004355

然后我创建了另一个名为rollReturnRandomDf的数据框,该数据框由日期索引,这是从rollTestLogReturnsData随机选择的行。这是使用:

构建的
rollReturnRandomDf = rollTestLogReturnsData.ix[np.random.choice(rollTestLogReturnsData.index, len(rollTestLogReturnsData.index))]

看起来像:

                      BBG.KABN.S     BBG.TKA.S      BBG.CON.S         BBG.ISAT.S  
  date                                                                           
  2015-02-20        -0.004881        0.008011        0.007047        -0.000307   
  2015-02-20        -0.004881        0.008011        0.007047        -0.000307   
  2015-02-19         0.005041       -0.007580        0.004164         0.003923    
  2015-02-17        -0.005821       -0.016792       -0.016111         0.001028   
  2015-02-20        -0.004881        0.008011        0.007047        -0.000307  

请注意,多行的索引日期可以相同(在这种情况下,2015-02-20会发生3次)。当我询问rollTestLogReturnsData时,问题就开始了。

有没有办法用整数重新索引rollTestLogReturnsData数据帧,所以它看起来像:

                     BBG.KABN.S     BBG.TKA.S      BBG.CON.S         BBG.ISAT.S  
  Index                                                                           
  0                  -0.004881        0.008011        0.007047        -0.000307   
  1                  -0.004881        0.008011        0.007047        -0.000307   
  2                   0.005041       -0.007580        0.004164         0.003923    
  3                  -0.005821       -0.016792       -0.016111         0.001028   
  4                  -0.004881        0.008011        0.007047        -0.000307

我试过操作上面的代码行但是没有想出办法来做到这一点。有人可以帮我一下吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

尝试rollReturnRandomDf.reset_index(drop=True)

在:

Out[170]: 
                 A       B       C       D
0                                         
2015-02-19  0.0050 -0.0076  0.0042  0.0039
2015-02-18  0.0006  0.0192 -0.0003 -0.0018
2015-02-19  0.0050 -0.0076  0.0042  0.0039
2015-02-17 -0.0058 -0.0168 -0.0161  0.0010
2015-02-18  0.0006  0.0192 -0.0003 -0.0018

后:

Out[171]: 
        A       B       C       D
0  0.0050 -0.0076  0.0042  0.0039
1  0.0006  0.0192 -0.0003 -0.0018
2  0.0050 -0.0076  0.0042  0.0039
3 -0.0058 -0.0168 -0.0161  0.0010
4  0.0006  0.0192 -0.0003 -0.0018

答案 1 :(得分:0)

您应该对dataFrame使用.set_index方法。

newIndex = [i for i in range(len(rollTestLogReturnsData))]
newDF = rollTestLogReturnsData.set_index(newIndex)