Python-匹配excel中两个表中最接近的值
我有两个表格,一个是风速数据,另一个是二氧化碳数据。每个都有unix时间戳,但并非所有时间都完全匹配。我想根据最接近的时间对数据进行配对。有没有一种方法可以使用python逻辑和/或pandas实现这一点 例如:Python-匹配excel中两个表中最接近的值,python,excel,Python,Excel,我有两个表格,一个是风速数据,另一个是二氧化碳数据。每个都有unix时间戳,但并非所有时间都完全匹配。我想根据最接近的时间对数据进行配对。有没有一种方法可以使用python逻辑和/或pandas实现这一点 例如: Time CO2 Time Wind 13982034 300 13984094 3.4 13985000 303 14034957
Time CO2 Time Wind
13982034 300 13984094 3.4
13985000 303 14034957 4.5
14029480 301
预期的结果是:
Time CO2 Wind
13982034 300 3.4
13985000 303 3.4
14029480 301 4.5
它是基本的排序和搜索(Knuth,第2卷) 这超越了任何特定的实现语言或包
- 按时间戳搜索时间将插入列表的位置。如果是一个长列表(比如>100行),则使用二进制或插值搜索
- 这将为您提供两个相邻的条目。一个简单的
语句将指示较近的一个李>if
- 从该条目中窃取风速,并将其添加到CO2表中的记录中
co2_times = [13982034, 13985000, 14029480]
wind_times = [13984094, 14034957]
for wt in wind_times:
closestTime = min(co2_times, key=lambda c:abs(c-wt))
print("Wind Time: " + str(wt) + "\nClosest CO2 Time: " + str(closestTime) + "\n")
输出:
Wind Time: 13984094
Closest CO2 Time: 13985000
Wind Time: 14034957
Closest CO2 Time: 14029480
请注意,如果运行时很重要,您应该查看@Prune提供的答案。排序和二进制搜索将为您提供更好的性能,但如果您的列表没有那么大,那么运行时间将可以忽略不计 只是澄清一下;您是否总是尝试将风测量值与每个CO2测量值相匹配,即CO2比风测量值多?还有,您迄今为止尝试了什么-如果人们看到您尝试了什么代码以及哪里出了问题,他们将能够更好地帮助您。