繁体   English   中英

min(iterable, *[, key, default]) 返回什么

[英]What does min(iterable, *[, key, default]) return

对于下面的df ,我想从当前Timestamp之前和之后的 10 个值的范围中找到特定时间戳的最近日期时间,即当前时间戳前一分钟。

但是我观察到在不同情况下为one_min_ago_data返回的值不同,有时它返回Timestamp ,有时它返回整个行作为<class 'numpy.ndarray'> min(iterable, *[, key, default])返回什么? 在这种情况下, min() function 返回什么? 我可能在这里忽略了一些东西,但我不确定是什么。 任何建议表示赞赏。

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))

我认为熊猫的滚动 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM