【发布时间】:2021-05-18 22:02:31
【问题描述】:
对于下面的df,我想从当前Timestamp 之前和之后的10 个值的范围内,找到当前时间戳前一分钟的特定时间戳的最近日期时间。
但我观察到在不同情况下为 one_min_ago_data 返回了不同的值,有时它返回 Timestamp,有时它返回整个行作为 <class 'numpy.ndarray'>。 min(iterable, *[, key, default]) 返回什么?在这种情况下,min() 函数返回什么?我可能在这里忽略了一些东西,但我不确定是什么。任何建议表示赞赏。
df:
Timestamp A B C
912262 2001-02-10 00:01:45.910 45.5 NaN zero
530129 2001-02-10 00:05:33.430 43.5 NaN zero
243281 2001-02-10 00:07:05.600 45.0 NaN zero
520580 2001-02-10 00:07:13.600 46.0 NaN zero
228900 2001-02-10 00:07:23.600 47.0 NaN zero
我使用的代码如下所示:
for i in range(1, len(df.index)):
left_timestamp = df.loc[i - 10:i - 1]
right_timestamp = df.loc[i + 1:i + 10]
time_one_min_ago = df.loc[i, 'Timestamp'] - datetime.timedelta(minutes=1)
one_min_ago_data = min(left_timestamp.append(right_timestamp).to_numpy(), key=lambda x: abs(x[timestamp_index] - time_one_min_ago))
【问题讨论】:
标签: python arrays pandas for-loop min