Python 根据与不同数据帧最近的日期时间合并/加入数据帧
我有一个相当长(100000+)的pandas数据帧,我想根据最接近的元素(通过索引)将此数据帧与另一个数据帧合并到另一个数据帧对象。例如,让我们假设对象1如下所示:Python 根据与不同数据帧最近的日期时间合并/加入数据帧,python,datetime,pandas,dataframe,Python,Datetime,Pandas,Dataframe,我有一个相当长(100000+)的pandas数据帧,我想根据最接近的元素(通过索引)将此数据帧与另一个数据帧合并到另一个数据帧对象。例如,让我们假设对象1如下所示: DateTime x_1 y_1 2016-07-05 08:30:00 1 2 2016-07-05 08:30:01 3 4 2016-07-05 08:30:02 5 6 2016-07-05 08:30:03 7
DateTime x_1 y_1
2016-07-05 08:30:00 1 2
2016-07-05 08:30:01 3 4
2016-07-05 08:30:02 5 6
2016-07-05 08:30:03 7 8
2016-07-05 08:30:05 9 10
2016-07-05 08:30:11 11 12
对象2如下所示:
DateTime x_2 y_2
2016-07-05 08:30:00 13 14
2016-07-05 08:30:05 15 16
2016-07-05 08:30:05 17 18
2016-07-05 08:30:10 19 20
我想返回一个新对象object3,它的长度与object2相同,现在包含object1中最接近object2时间的项。在本例中,Object3如下所示:
DateTime x_2 y_2 x_1 y_1
2016-07-05 08:30:00 13 14 1 2
2016-07-05 08:30:05 15 16 9 10
2016-07-05 08:30:05 17 18 9 10
2016-07-05 08:30:10 19 20 11 12
目前,我按照这些思路做了一些工作,以使其发挥作用,但我得到了reindex错误(非唯一索引):
object3=object2.join(object1.reindex(object2.index,method='nearest'),how='left')
返回一个valueerror:
ValueError:无法使用方法或限制重新索引非唯一索引
对其他索引的唯一值执行重新索引
。您将在连接过程中拾取重复项
object3 = object2.join(object1.reindex(object2.index.unique(), method='nearest'))
结果输出:
x_2 y_2 x_1 y_1
DateTime
2016-07-05 08:30:00 13 14 1 2
2016-07-05 08:30:05 15 16 9 10
2016-07-05 08:30:05 17 18 9 10
2016-07-05 08:30:10 19 20 11 12
您提供的多对一示例恰好在相同的日期时间合并。这是故意的吗?如果没有,你能举例说明“关闭”是什么意思以及你希望如何处理它吗?@unutbu:是的!对不起,原定于2016-06-05 08:30:10@piRSquared:是的!这是故意的。我想保留索引的副本我的意思是,这是一个简单的等值合并,还是需要一些日期时间的模糊匹配?