2016-01-12 29 views
0

是否有熊貓的方式加入到數據幀df與作爲'2014-09-26 15:15:00'指數datetime64[ns]格式,而另一個數據幀,但與指數datetime64[ns]格式,如'2014-09-26但沒有時間戳?加入了日期+時間戳指標和數據幀與日期索引一個數據幀

例如:

print df1 
          Vol 
    2011-01-05 09:45:00 0.333315 
    2011-01-05 09:45:00 0.228341 
    2011-01-05 10:00:00 0.207289 

和DF2

  macro_ind 
2010-01-05 0.216485 
2010-01-06 0.201550 
2010-01-07 0.187641 
2010-01-08 0.176686 

我嘗試使用df1.join(df2)並希望得到:

     Vol  macro_ind 
2011-01-05 09:45:00 0.333315 0.216485 
2011-01-05 09:45:00 0.228341 0.216485 
2011-01-05 10:00:00 0.207289 0.216485 

,但沒有成功......我可以用pd.merge但這迫使我創建一個日期列並重置我的索引,等等......很多我希望避免的步驟。

回答

0

我假設macro_ind的日期也是2011。我會建議將相應time列作爲普通列像這樣:

date: 

     date macro_ind 
0 2011-01-05 0.216485 
1 2011-01-06 0.201550 
2 2011-01-07 0.187641 
3 2011-01-08 0.176686 

time: 
       time  Vol 
0 2011-01-05 09:45:00 0.333315 
1 2011-01-05 09:45:00 0.228341 
2 2011-01-05 10:00:00 0.207289 

然後,以下工作:

time_df['date'] = time_df.time.apply(lambda x: x.date()) 
date_df['date'] = date_df.date.apply(lambda x: x.date()) 
time_df = time_df.merge(date_df, how='left', on='date').drop('date', axis=1) 

       time  Vol macro_ind 
0 2011-01-05 09:45:00 0.333315 0.216485 
1 2011-01-05 09:45:00 0.228341 0.216485 
2 2011-01-05 10:00:00 0.207289 0.216485 
+0

是的,我是用類似之前的東西。 '加入'沒有什麼? – Plug4

+0

但我想你的解決方案是唯一的方法... – Plug4

+0

對不起,但我不知道一種方法來臨時轉換'DateTimeIndex'到'日期'。也許別人知道。 – Stefan

相關問題