我有 2 個(gè)數(shù)據(jù)框。一個(gè)有日期時(shí)間索引并包含每日數(shù)據(jù)點(diǎn):df1.head(5) data_pointDate 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 另一個(gè)有 5 分鐘的數(shù)據(jù)點(diǎn):df2.head(5) Open High DatetimeDate_Time 2010-01-04 09:00:00 22.40 22.45 2010-01-04 09:00:002010-01-04 09:05:00 22.45 22.45 2010-01-04 09:05:002010-01-04 09:10:00 22.40 22.45 2010-01-04 09:10:002010-01-04 09:15:00 22.45 22.45 2010-01-04 09:15:002010-01-04 09:25:00 22.35 22.35 2010-01-04 09:25:00問題:當(dāng)我遍歷 的值時(shí)df2,我需要知道df1.這將需要df1每天查詢288 次(一天有 288 個(gè)單位為 5 分鐘)才能獲得相同的數(shù)據(jù)。問題:解決這個(gè)問題的最正確和最有效的方法是什么?合并 2 個(gè)數(shù)據(jù)幀,df3看起來像這樣?但是如何? Open High daily_data_point_from_df1Date_Time 2010-01-04 09:00:00 22.40 22.45 1.1112010-01-04 09:05:00 22.45 22.45 1.111 2010-01-04 09:10:00 22.40 22.45 1.1112010-01-04 09:15:00 22.45 22.45 1.111 2010-01-04 09:25:00 22.35 22.35 1.111或者我應(yīng)該每天查詢 df1 并手動處理邏輯以避免在同一天多次執(zhí)行?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 回答

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以使用 merge
df3=df2.assign(Date=df2.Datetime.dt.date).merge(df1.reset_index(),on='Date',how='left')
添加回答
舉報(bào)
0/150
提交
取消