我有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]
答案 0 :(得分:1)
您可以使用merge
df3=df2.assign(Date=df2.Datetime.dt.date).merge(df1.reset_index(),on='Date',how='left')