我有一个带有日期时间列和值列的数据框,我想找到一种方法来创建另一列,其中最接近给定时间的值在日期时间之前的间隔。找到最接近特定时间的数据帧中的值
我想要的是一个名为“值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小时合并到数据框本身的副本前。我会尝试,并作为一个答案,如果它的作品。 –