我正在尝试隔离特定heading
值,其中time
最接近datetime64 / timedelta值。
DF看起来像这样。
heading times
0 270.00 2016-01-20 21:39:31
1 0.00 2016-01-20 21:39:30
2 270.00 2016-01-20 21:34:15
3 293.36 2016-01-20 21:29:00
4 90.00 2016-01-20 21:28:59
我创建了一个timedelta,即times - 10 mins
。我想要做的是获得最接近10分钟前的行的heading
值,并将其与当前的标题值进行比较。任何想法都将不胜感激。
编辑以解决以下评论。
最终结果是将heading
值与任意时间δ的最接近的标题值进行比较(例如,过去10分钟)。
例如,将heading
中的row 1
值与heading
中的row 3
值进行比较,因为它最接近10分钟。
答案 0 :(得分:0)
希望我能够完全按照说明解决这个问题。例如,问题表明目标是获得最接近的值到十分钟之前(即使没有接近该值的值)。我将假设最接近意味着最接近并且不会在一分钟之内进行其他任意截止。
首先,我要从DatetimeIndex
列
times
df.index = pd.DatetimeIndex(df.times)
然后创建你的时间增量:
time_delta = df.index - pd.Timedelta(minutes=10)
定义一个函数以从索引中获取最接近的时间。这是直接从之前的SO answer
中获取的def nearestDate(dates, pivot):
return min(dates, key=lambda x: abs(x - pivot))
创建一个新列,其值为最接近时间到前十分钟的值
df['heading2'] = [df.loc[nearestDate(df.index, e)]['heading'] for e in time_delta]
df
heading times heading2
2016-01-20 21:39:31 270.0 2016-01-20 21:39:31 293.6
2016-01-20 21:39:30 0.0 2016-01-20 21:39:30 293.6
2016-01-20 21:34:15 270.0 2016-01-20 21:34:15 90.0
2016-01-20 21:29:00 293.6 2016-01-20 21:29:00 90.0
2016-01-20 21:28:59 90.0 2016-01-20 21:28:59 90.0