python - 在 Python 中使用带有多个参数的 min(, [, key])
问题描述
我想用来在 2 个对象min(, [, key])
中找到与当前时间最接近的值,并捕获.current_time
left_data
right_data
current_time
left_data= df.loc[i-100:i-1, 'Timestamp']
right_data= df.loc[i+1:i+100, 'Timestamp']
我使用的代码如下所示:
data = min(left_data, right_data , key=lambda x: abs(x - current_time))
它发现了错误:
ValueError: Can only compare identically-labeled Series objects
在文档中它指出
The key argument specifies a one-argument ordering function like that used for list.sort()
是因为我使用了 2 个参数而不是 1 个吗?我怎样才能让 min(, [, key]) 工作的 2 个参数?
编辑:
df
看起来像:
Timestamp value
0 2000-01-10 17:32:05.090 27.5
1 2000-01-10 17:32:11.090 29.0
2 2000-01-10 17:32:15.090 31.0
3 2000-01-10 17:32:17.090 32.5
4 2000-01-10 17:32:19.090 34.0
5 2000-01-10 17:32:21.090 36.0
6 2000-01-10 17:32:23.090 37.5
7 2000-01-10 17:32:25.160 38.5
8 2000-01-10 17:32:27.160 39.5
9 2000-01-10 17:32:31.160 41.0
解决方案
一种使用方式numpy.hstack
:
i = 5
current_time = df.loc[i, 'Timestamp']
left_data= df.loc[i-100:i-1, 'Timestamp']
right_data= df.loc[i+1:i+100, 'Timestamp']
min(left_data.append(right_data) , key=lambda x: abs(x - current_time))
输出:
Timestamp('2000-01-10 17:32:19.090000')
如果你想要值:
i = 5
current_time = df.loc[i, "Timestamp"]
left_data= df.loc[i-100:i-1]
right_data= df.loc[i+1:i+100]
min(left_data.append(right_data).to_numpy() , key=lambda x: abs(x[0] - current_time))[1]
输出:
34.0
推荐阅读
- java - 如何在 Eclipse 中的较大项目中分析您正在使用的 Java 代码的运行时
- node.js - 安装特雷弗先生
- list - 谓词给出未绑定变量的列表而不是所有可能的列表
- r - 如果第一行的第一列包含“区域”字样,则将整行作为标题。我如何在 R 中编码?
- postgresql - 在使用 keycloak 保护的 springboot 应用程序中实现基于模式的多租户
- mysql - 使用 mysql-commande 行与 delphi
- safari - Safari 不发送 ice 候选人
- java - 没有 Build.Groovy 文件的 Grails 项目。如何添加插件
- sql - 游戏数据库双外键
- r - 数据不完整的水平图