将DataFrame索引设置为DateTime

时间:2019-07-12 09:03:00

标签: python pandas datetime

我有一个pd.DataFrame,其索引类型为datetime64。我想将一个pd.Series列连接到该列并将其映射到索引。

但是,我的pd.Series具有object类型的日期,而我的pd.DataFrame具有datetime64类型的日期。

我尝试像这样将pd.Series索引转换为datetime

pd.Series的外观如下:

west_index[1:5]
Out[40]: 
                 WEST
Exchange Date        
2005-01-05    -0.7466
2005-01-06        NaN
2005-01-07     0.3401
2005-01-10    -0.0688

我做到了:

a = [datetime.strptime(_, '%Y-%m-%d') for _ in west_index.index]
west_index.set_index(a, inplace=True)

当我尝试连接到主pd.DataFrame时,如下所示:

log_r[500:505]
Out[42]: 
                BELEX15       BET       BUX  ...    STOXX50     WIG20  
Exchange Date                                ...                           
2006-12-08     0.131916  1.717272 -0.983922  ...   0.090416 -0.436533   
2006-12-11     0.191401 -0.645286  1.158256  ...   0.576408 -0.086710   
2006-12-12    -0.190785 -0.764530  0.753001  ...   0.396716 -0.684809   
2006-12-13    -0.521898  0.726442 -1.459122  ...   0.629700  0.202408   
2006-12-14     0.877326 -0.707257  1.099898  ...   0.718143  0.722291   

log_r = pd.concat([log_r,west_index], axis=1)

我遇到错误

  

KeyError:datetime.datetime(2005、1、4、0、0)

1 个答案:

答案 0 :(得分:1)

我认为最好将两个索引中的日期时间log_r.indexwest_index.index转换为日期时间,to_datetime

#check it
print (west_index.index.dtype)
print (log_r.index.dtype)

west_index.index = pd.to_datetime(west_index.index)
log_r.index = pd.to_datetime(log_r.index)
log_r = pd.concat([log_r, west_index], axis=1)