我有两个表,一个表包含风速数据,另一个表包含CO2数据。每个都有unix时间戳,但是所有时间都不完美匹配。我想根据最可能的时间配对数据。有没有办法使用python逻辑和/或熊猫来实现这一目标?
示例:
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
答案 0 :(得分:0)
这是基本的排序和搜索(Knuth,第2卷)。 :-)
这超越了任何特定的实现语言或程序包。
对于每个CO2输入...
if
语句将指示较接近的语句。 答案 1 :(得分:0)
您可以迭代风速,并为每个值找到差异最小的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提供的答案。排序和二进制搜索将为您提供更好的性能,但是如果列表的大小不超过运行时间,则可以忽略不计。