在2个熊猫数据框之间以最快,最正确的方式搜索日期忽略时间

时间:2019-04-04 15:04:02

标签: python pandas

我有2个数据框。一个具有日期时间索引并包含每日数据点:

df1.head(5)

            data_point
Date                                                                 
2004-04-01  1.180180     
2004-04-02  1.213555      
2004-04-05  1.243821      
2004-04-06  1.224543      
2004-04-07  1.213832    

另一个具有5分钟的数据点:

df2.head(5)  

                      Open   High                   Datetime
Date_Time                                                                   
2010-01-04 09:00:00  22.40  22.45         2010-01-04 09:00:00
2010-01-04 09:05:00  22.45  22.45         2010-01-04 09:05:00
2010-01-04 09:10:00  22.40  22.45         2010-01-04 09:10:00
2010-01-04 09:15:00  22.45  22.45         2010-01-04 09:15:00
2010-01-04 09:25:00  22.35  22.35         2010-01-04 09:25:00

问题:在迭代df2的值时,我需要知道df1中的每日值是什么。

这将需要每天查询df1 288次(每天有288个单位,每天5分钟),以获取相同的数据。

问题:解决这个问题的最正确,最有效的方法是什么?合并两个数据帧,以便df3看起来像这样?但是如何?

                      Open   High                   daily_data_point_from_df1
Date_Time                                                                   
2010-01-04 09:00:00  22.40  22.45                   1.111
2010-01-04 09:05:00  22.45  22.45                   1.111  
2010-01-04 09:10:00  22.40  22.45                   1.111
2010-01-04 09:15:00  22.45  22.45                   1.111   
2010-01-04 09:25:00  22.35  22.35                   1.111

还是我应该每天查询df1并手动处理逻辑以避免在同一天多次执行该操作?

for index, row in df2.iterrows():
     # Manually check if date changed and do this if it did:
     date = df2['Datetime'].replace(hour=0, minute=0)
     daily_data_point_from_df1 = df.loc[date]

1 个答案:

答案 0 :(得分:1)

您可以使用merge

df3=df2.assign(Date=df2.Datetime.dt.date).merge(df1.reset_index(),on='Date',how='left')