什么是 min(iterable, *[ key, default]) return
What does min(iterable, *[, key, default]) return
对于下面的df
,我想从当前Timestamp
前后的10个值的范围内,找到与特定时间戳最接近的日期时间,即当前时间戳前一分钟.
但我观察到 returned 在不同情况下 one_min_ago_data
的值不同,有时 returned Timestamp
,其他时候 returned整行为 <class 'numpy.ndarray'>
。 min(iterable, *[, key, default])
return 是什么意思?在这种情况下,min()
函数 return 是什么?我可能在这里忽略了一些东西,但我不确定是什么。任何建议表示赞赏。
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))
我认为 pandas' 滚动 window 非常适合这个,但它有太多限制,所以我们回到了一些好的旧循环:
timestamp = df['Timestamp'].to_numpy()
l = len(timestamp)
win_size = 10
result = np.empty(l, dtype='datetime64[ns]')
for i, ts in enumerate(timestamp):
# Take 10 rows from above and 10 from below, but not the current row
lbound = max(i-win_size, 0)
ubound = min(i+win_size, l-1) + 1
tmp = timestamp.take([idx for idx in range(lbound, ubound) if idx != i])
# Find the timestamp with the lowest distance from the current timestamp
argmin = np.abs(tmp - ts).argmin()
result[i] = tmp[argmin]
df['result'] = result
对于下面的df
,我想从当前Timestamp
前后的10个值的范围内,找到与特定时间戳最接近的日期时间,即当前时间戳前一分钟.
但我观察到 returned 在不同情况下 one_min_ago_data
的值不同,有时 returned Timestamp
,其他时候 returned整行为 <class 'numpy.ndarray'>
。 min(iterable, *[, key, default])
return 是什么意思?在这种情况下,min()
函数 return 是什么?我可能在这里忽略了一些东西,但我不确定是什么。任何建议表示赞赏。
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))
我认为 pandas' 滚动 window 非常适合这个,但它有太多限制,所以我们回到了一些好的旧循环:
timestamp = df['Timestamp'].to_numpy()
l = len(timestamp)
win_size = 10
result = np.empty(l, dtype='datetime64[ns]')
for i, ts in enumerate(timestamp):
# Take 10 rows from above and 10 from below, but not the current row
lbound = max(i-win_size, 0)
ubound = min(i+win_size, l-1) + 1
tmp = timestamp.take([idx for idx in range(lbound, ubound) if idx != i])
# Find the timestamp with the lowest distance from the current timestamp
argmin = np.abs(tmp - ts).argmin()
result[i] = tmp[argmin]
df['result'] = result