我有一個帶有日期時間列和值列的數據框,我想找到一種方法來創建另一列,其中最接近給定時間的值在日期時間之前的間隔。找到最接近特定時間的數據幀中的值
我想要的是一個名爲「值2小時前」的列,並且此列的值對應於最接近2小時前的「值」列。
例如,如果「Date-Time」列顯示「01/01/2014 12:10:00」,則此新列將返回「Date-Time」行中的「Value」是最接近「01/01/2014 10:10:00」
更好的是,如果我可以根據實際時間間隔與期望的「2小時」間隔有多遠,對此值應用一些條件。例如,「返回距離2小時前最近的值,除非它小於1小時前或超過3小時前,則不返回任何內容」
舉例說明,下面是一個示例輸入數據框。我可以在2小時前輕鬆獲取該值,然後將其自動合併到兩個日期時間列中。挑戰在於讓這種合併成爲最接近的匹配,而不是完全匹配。
df = pd.DataFrame({'Date-Time' : pd.Series(["01/01/2014 04:11:00", "01/01/2014 08:10:00","01/01/2014 09:11:00","01/01/2014 12:10:00"], index=['1', '2','3', '4']),'Value' : pd.Series([9,12,3,21], index=['1', '2','3','4'])})
df["Time"]=pd.to_datetime(df["Time"])
df["t_2h_ago"]=df["Time"]-pd.to_timedelta('2h')
merged=pd.merge(df,df,how='left',left_on='Time',right_on='t_2h_ago')
您是否嘗試編寫一些代碼來創建該列?在我看來,至少用簡單的方法很簡單。問一個更具體的問題,而不是僅僅描述一個需求就更好了。 – ohw
我真的不知道從哪裏開始,所以我一直在尋找建議的方法或僞代碼。然而,從那以後,我發現了使用「最接近」方法的reindex,所以我認爲我應該能夠使用date-time列和一個計算列將時間2小時合併到數據框本身的副本前。我會嘗試,並作爲一個答案,如果它的作品。 –