我有一个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)
答案 0 :(得分:1)
我认为最好将两个索引中的日期时间log_r.index
或west_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)